動き出す mod_rewrite そして AddHandler の罠
WFSのDB移行作業で問題発生。
以下のような間違えようのないmod_rewriteの設定(テスト用なので意味のない変換です)
RewriteEngine on
RewriteBase /test/
RewriteRule ^data/index\.htm$ data.htm?p=0
このような場合に data/index.htmへのアクセス時の挙動がおかしい!?
testフォルダ以下 は data.htm のみ存在し、dataフォルダは無い。
このような時、
test/data/index.htm へアクセスしてもリライトが動いてない感じ。
さらに data/index/ygerhe;@/piropiropiro-n/
のようなアクセスも出来てしまうなぞ。そしてvar_dump()で$_GETを表示してもなにもデータがない。
ぼきの rewriteが間違っているというのか!?
これをうけてhtaccessと格闘するもむなしく頓挫。
しかし調べていくとどうやら原因はルートで指定していた
AddHandler myphp-script .htm
Action myphp-script /php.cgi
こいつのせいみたい。
この指定があると拡張子htmが無視というか、無理クソPHPエンジンに送られてしまうようで、ファイル名以降の指定が意味を持たなくなる感じ。
test/data/index.htm へアクセスすると ハンドラのせいでtest/data.htm へのアクセス扱いになっていて、リライトされない。
想定している挙動と実挙動が食い違って3時間悩む結果に。
とりあえずファイルを移動させて、仮想的なパスの指定と競合しないようにすることで回避を目指すことにしました。
あーおそろしぃ。
ちなみに環境はさくらのレンタルサーバーで、
PHP Version 5.2.17
Apache/1.3.42 (Unix)
でした。
ではまた。