PHPプログラムに関する各種メモ書き

apacheの mod_rewrite エンコードされたURLに %2Fや%5Cが含まれると404エラーになる場合の回避法

● httpd.confを触れる環境下では httpd.confに以下を追加する

AllowEncodedSlashes On

※ 注意 .htaccessには記述できません。

● PHPやJavaScriptのコーディングで(/)→(%2f)→(%252f)変換することで対応する

・phpでエンコード

// スラッシュだけを変換する
$q = preg_replace("{/}","%2f",$q);
// この後クエリ全体を urldecode します

・phpでデコード

$q = preg_replace("{%252f}","%2f",$q);

No.1094
03/01 13:42

edit