いや~、はまったはまった。。。
mod_rewriteを使った場合にクエリーに「%2F」が含まれていてうまく動かない場合の解決方法です。
PHPで以下のようなスクリプトをくんだとします。
index.php
< ?php echo $_GET["pre"]; echo $_GET["path"]; ?>
そして、
以下のように「.htaccess」にmod_rewrite構文を設定していたとします。
RewriteEngine On
RewriteRule ^hiroshima/(.*)$ index.php?pre=hiroshima&path=$1 [L]
ここで、「http://*******/hiroshima/aiueo/」にアクセスすると、きちんとアクセスできます。
この場合、mod_rewriteによって実際には、「http://****/index.php?pre=hiroshima&path=aiueo」にアクセスします。
しかし、
http://*******/hiroshima/aiueo%2Fkakikukeko/
にアクセスすると、うまくアクセスできなくなってしまいました。
mod_rewriteによって、
http://****/index.php?pre=hiroshima&path=aiueo%2Fkakikukeko
というURLに実際にはアクセスするのですが、「%2F」、つまりは「/(スラッシュ)」をURLエンコードした文字列を含む場合、うまくデコードしてくれないようなのです。
この解決方法としては、
Apacheの設定ファイル、「httpd.conf」に以下の分を追加します。
AllowEncodedSlashes On
これでうまくスラッシュをデコードしてくれるようです。
こちらの記事もあわせてどうぞ!
- Newer: 還元ろ過BOX
- Older: イソギンチャクが次々☆に・・・・
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.multiburst.net/ElectricBrain/2008/10/mod_rewrite2f/trackback
- Listed below are links to weblogs that reference
- mod_rewriteの「%2F」問題の解決法 from ElectronicBrain is eating BreakFast

