Minase's Blog - FYA

AllowEncodedSlashes 「%2F」で404エラー

投稿日:

mod_rewrite で値を渡す時に「%2F」が含まれていると404エラーになった。
これは Apache がリクエストされたURLに「%2F」が含まれていたら強制的に404を返すようになっているのが問題です。

この症状を改善する設定が Apche には存在します。
それが「AllowEncodedSlashes」です。
(Apache 2.0.46 以降で使用可能)
(詳しくは参照リンクをご覧下さい)
デフォルトではこの機能がオフになっています。

オンにするにはサーバ設定ファイル(httpd.conf)へ以下の設定を追加します。

AllowEncodedSlashes On

バーチャルホストで運営している場合は以下の様に設定を追加します。

<VirtualHost *:80>
SuexecUserGroup * *
ServerAdmin *@*.jp
DocumentRoot /home/*/public_html
ServerName *.*.jp
AllowEncodedSlashes On
</VirtualHost>

※「AllowEncodedSlashes」は共有サーバにおいて若干セキュリティ面の問題あり。
※そんな訳でFYAではサポートしていない機能です。
※FYAにおいては「%2F」のみスクリプト側で二回URLエンコードするなどで対処下さい。

参考リンク
http://httpd.apache.org/docs/2.0/ja/mod/core.html#allowencodedslashes