Home > Apache | PHP > mod_rewriteの「%2F」問題の解決法

mod_rewriteの「%2F」問題の解決法

いや~、はまったはまった。。。

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

これでうまくスラッシュをデコードしてくれるようです。

関連記事

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.multiburst.net/sometime-php/2008/10/mod_rewrite2f/trackback/
Listed below are links to weblogs that reference
mod_rewriteの「%2F」問題の解決法 from Sometime PHP

Additional comments powered by BackType

Home > Apache | PHP > mod_rewriteの「%2F」問題の解決法

Subscribe This Blog
Subscribe This Blog
FeedBurner

Search
Categories
Tag Cloud
Twitter Counter
Archives
My Other Blogs
Translator
Japanese flagEnglish flag

Return to page top