2009/2/19 木曜日

mod_rewriteの%2f(スラッシュ)問題で404 エラーになる件

Filed under: mod_rewrite, apache, php — admin @ 17:48:36

Apache 2.0.46以降であれば
httpd.confで

AllowEncodedSlashes On

とすることで回避できることは有名ですが、
.htaccessで設定できないことから
レンタルサーバー等で運用していて
上記設定が不可能な場合アプリケーション側で対応する必要があります。

方法としては%2fだけ二重にエスケープすることで回避します。

で、具体的な回避方法が見当たらなかったので自分用メモとして
書き残しておきます。

phpサンプル

str_ireplace("%2f","%252f",urlencode($url))
No Tags