mod_rewrite 試行錯誤メモ

URL

 状態:  閲覧数:1,408  投稿日:2010-11-30  更新日:
▽URIから「modules」という文字列を削る - XOOPS Cube Legacy カスタマイズ 文系出張所
  http://xoops.kudok.com/branchoffice/index.php?URI%E3%81%8B%E3%82%89%E3%80%8Cmodules%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E5%89%8A%E3%82%8B
▽XOOPSのアドレスをすっきり短く - Whimsical Diary
  http://memo.ms/htaccess/xoops_url.php
▽2010-04-21 - 氷川 XOOPS Module 開発室
  http://d.hatena.ne.jp/kilica/20100421
▽Xoops Users Group Japan - Re: d3blogのmod_rewrite設定は可能でしょうか。
  http://www.xugj.org/modules/QandA/index.php?post_id=5577


■試してみようと思った理由は、大きく二つ
・Simplified URLみたいに、静的ページを目指すわけではない。これぐらいならmod_rewriteでもイケるかも?と思った
・モジュール毎に設定するようだったので、駄目なモジュールがあればそれだけ外せばいいや、と思った

■エラー
Fatal error: Cannot redeclare modules_changer() (previously declared in mainfile.php:54) in /XOOPS_ROOT_PATH/mainfile.php on line 60
▽ぐさぎ どっと こむ - Re: /modules/アドレス短縮ハックでWizMobileを使用できる?
  http://www.gusagi.com/modules/forum/index.php?post_id=132
■エラー
Fatal error: Call to undefined function funcion_exists() in /XOOPS_ROOT_PATH/mainfile.php on line 52
//if (funcion_exists('modules_changer') === false) {

if (!function_exists("modules_changer")) {


■画面真っ白になったモジュール
・sitemap
・pico(既にmod_rewriteで、静的処理しているため?)

■とりあえずハックできたモジュール。引き続き、様子見中…
・bulletin
・gnavi
・d3forum
・hdpoll
・d3blog
・amazon
・d3pipes



しばらく様子見て、問題ないようだったら、静的化にもチャレンジしたい…。



あー、でも、今、気付いた。
管理画面が、えらいことになってる…。
機能的には問題なさそうだけど、
CSSが崩れまくってて使いづらいことこの上ない…。

あと、hdpollは、ブロックから投票すると、undefinedとかなる。
モジュールからなら、O.K.
しょうがないので、元に戻す。



■mod_rewiteを利用しないことにしたモジュール
・sitemap(画面真っ白になる)
・pico(画面真っ白)
・hdpoll(ブロックから投票不可)

■mod_rewiteを利用してみるモジュール。引き続き、様子見中…
・bulletin
・gnavi
・d3forum
・d3blog
・amazon
・d3pipes
・piCal
・xwords
・myalbum

あるサイトのgnaviで、下記エラー発生。
どうやら、sitemapと同じ現象のようだ。
Fatal error: Call to a member function getVar() on a non-object in /XOOPS_TRUST_PATH/modules/gnavi/include/common_prepend.inc.php on line 65

Fatal error: Call to a member function getVar() on a non-object in /XOOPS_ROOT_PATH/modules/sitemap/index.php on line 44

違うディレクトリ名はO.K. /modules/d3blog/→blog
同じディレクトリ名だと× /modules/sitemap/→sitemap

なんでよ?


結局、理由が分からず、
しょうがないので、
ディレクトリ名を無理矢理変更することにした。

これで、解決したと思ったら、全然違った。
sitemapとか、picoとか、モジュール名変えてもダメだった。

ということは、どういうことよ?
このサイトのgnaviだけ、なんでおかしいの?

考えられることはひとつ。
このサイトのgnaviだけ、インストールした後に、ディレクトリ名変えたんだよね。
つい、さっき。それが原因か?

別のサイトで、初めから、gnaviのディレクトリ名変更してインストールしたヤツがあるので、
それで試してから考えよう。

それでダメだったら…。
うーん、全然、分からん…。
頭が、こんがらがってきた。
とりあえず、このサイトのgnaviは、後回しだ。


重大な事実が判明。
このやり方だと、
インストールするときにディレクトリを変えたd3モジュール(インストール後に変えたヤツも)は、
同じ名前を利用した短縮URLに出来ない。

■d3forum→そのままインストール
modules/d3forum → forum O.K.

■d3forum→forumへ名前を変えインストール(あるいは、インストール後にディレクトリ名変更)
modules/forum → forum N.G. ←このやり方では、同じ名前だとエラーにになる。

■d3forum→forumへ名前を変えインストール(あるいは、インストール後にディレクトリ名変更)
modules/forum → forums O.K.

mod_rewriteの書き方次第で何とかなるような気もするが、
具体的にどうすればよいかさっぱり分からない。

かと言って、インストールする際、ディレクトリ名変更したモジュールを
再度、デフォルトでインストールし直すなど、そんなのヤだ。

超メンドクサイし…。

結局、インストールする際、ディレクトリ名変更したD3モジュールは、
mod_rewiteで再度、ディレクトリ名変更することで、対応することにした。

うーん、相変わらず、全然、成長してないなァ…。
ここら辺り、どうなってるのか、さっぱりわからねーッ!


▼12/1 12:15追記
d3モジュールとか、ディレクトリ名変更とか(インストール後に変えたヤツも)
全部関係なかった。
modules/bulletin → bulletin が同じ名前だと、下記などのエラーになるだけのようだ。.
Fatal error: Call to a member function getVar() on a non-object in /XOOPS_ROOT/modules/bulletin/class/bulletingp.php on line 53
また、やり直しかよ(笑)


■管理画面のレイアウト崩れ
これぐらいなら何とかなるかな、と思ったけど、全然分からない。
まず、管理画面のテンプレートを新たにインストールしてみた。全然、ダメ。
キャッシュとか削除してみた。全然、関係ないみたい。

レイアウト崩れの原因は、
<td id="leftcolumn">以下にあるはずの、
<div class="head" id="t6">から、</ul></div>が飛び出してしまっていること。
下に飛び出しているのなら、まだ救いようもあるが、
上に飛び出しているため、何をするにしても、いちいちスクロールしまくりで、
やってられない。

どこで設定してんだ? これは?


ファイル自体は、これっぽいけど、
何で、読み込む順番っていうか、親子関係が逆転してんだ?
modules\legacy\admin\theme/admin_theme.html
modules\legacy\admin\templates\blocks/legacy_admin_block_sidemenu.html

正直、管理画面のレイアウトとか見た目はこの際どうでもいいから、
「1アクション毎にスクロールしまくり必須状態」だけは、何とかしたいな…。


modules\legacy\admin\templates\blocks/legacy_admin_block_sidemenu.html
の中身を全部削除したら、スクロールしなくてもよくなった。
その変わり、leftcolumnの中身が空になったけど…。

ここの読み込むタイミングに問題が起きたとしか考えられない。
mod_rewiteのせいで? 
そんなことあり得るのかなァ?


試しに、WIZ MOBILE HDを外したら、
直った。

犯人発見。

上記サイトで指摘をされていた
関数の二重定義が原因か?

ていうか、携帯だからそういうつくりはしょうがないのか?

とにかく、これからやることは、
そもそも、この状態で携帯対応できているか?
ということ。

もし、携帯対応できていなかった場合は、
mod_rewriteの処理をとるか、携帯をとるか、撰ぶということか?
あるいは、その関数の二重定義と思われるところを探すか、
あるいは、スクロールを我慢して、使い続けるか…。

さあ、どうしよう。
今は、既に、12/1 10:19.


ものすごくざっと確認した限りだけど、携帯からのアクセスもパッと見は問題ないみたい。
そうですか…。
正直、携帯からのアクセスとかほとんどないから、ワリとどうでもよくなってるのだが、
導入にものすごい時間かかったってのがあって、
このmod_rewriteごときで、あの苦労を水の泡にするのもどうか、と思ってたんだよね。

そうすると、どうなるんだ?
残る選択肢は、下記何れかか…
・「mainfile.phpが複数回読まれて、関数の二重定義になっている」ところ(もしくはそれ以外の何らかの原因)を探すか
・スクロールを我慢して、使い続ける

modules/mobile/index.phpに問題があるのかな、と思い、
他のモジュールのコピってきたりしたけど、ダメ。

あかん。
こんなのきりない。

今、10:58。

11:30までに解決しなかったら、諦めよう。

自力を諦め、再び他力本願。

最新バージョンが出ていないか、に望みをつなぐ。

▼導入済バージョン
・WIZ MOBILE HD … 0.52 ← 最新バージョン(2010.03.22)
・ALTSYS … 0.58 ← 最新バージョン0.71(2008/12/22)
早速、ALTSYSをアップデート。

すごい期待したのだが、関係なかったみたい…。


今、12:00.

スゲー時間オーバーしてるが、
結局、何にも分からなかったので、
超強引に、見た目上、cssで
変更することにした。


XOOPS_ROOT/modules/legacy/admin/theme/stylesheets/style.css
/*2010.12.1 mod_rewite対応前
#container {
width:100%;
margin:0 auto;
text-align:left;
}

*/
#container {
width:85%;
margin:0 auto;
text-align:left;
position: absolute;
top:0;
right:0;
}

心配してるのは、
ここに影響でてるってことは、
きっと他でも出てる可能性あるってことだよね。
気付かないだけで…。

ああ、XOOPSって、やっぱり分からない…。


13:21追記
picoだと、管理画面一般設定で、
「モジュールトップでは自動生成メニューを表示する」
を、はい、にしないとダメみたい。

15:06追記
違った。上記は直接関係ない。
「カテゴリートップでリストを表示する」を、はい、にする。


■12/9追記
今、別のサイトで、この処理したけど、
管理画面のレイアウト、全然崩れてない…。
うそでしょ?
なんでくずれてないの?
もしかして、テーマのせい?

あれだけ散々調べたのに、
テーマが原因だったなんて、
そんなことってあるのかなあ?
前に調べたときは、
CSSじゃなくて、JavaScriptの読み込み順番等がおかしいと、
検討をつけたのだが、。
それって、やっぱテーマだったってことなの?

18:22 結局、分からず諦める。
つまり、サイトによって、
管理画面デフォルトcssのヤツと
強制指定cssと、大きく二グループ存在する。
理由→だから、分からないんだってば…。

▼以下、試したこと(但し、全て失敗)。
・管理画面デフォルト表示O.K.サイトを参考に、
テンプレートをいじくり倒す。→効果なし

・管理画面デフォルト表示O.K.サイトのテーマ毎、
コピペしてテーマを切り替える
→レイアウト崩れたまま…。なんだそりゃ?

・管理画面デフォルト表示O.K.サイトの
XOOPS_ROOT_PATH/modules/legacy/のディレクトリ毎、
入れ替え、アップロードしてみる。
→効果なし。もういい加減、イヤになってきた…。

その他、wizmobileが犯人かな? とか思ったけど、
両方のグループにインストールされてるし、
テーマはアップデートしたら、自動認識するようになってるし、
もう、これ以上は、ムリ。
わかんない。
-終了-。

もしかして、いつかひょんなことからでも原因が分かったら、
ここにメモすることにしたい。

フー、マジ疲れたッす。


インストール後、ディレクトリ名変更

mod_rewrite GnaviD3 URL静的化 試行錯誤メモ