Apache で URL に %2F が含まれていると 404 Not Found を返す場合は AllowEncodedSlashes を on にすれば良い

weble.org/foo/bar/ というパーマリンクでサイトを作っている時に bar のところに weble.org/foo/Fate%2FZero/ のようなスラッシュを URL エンコードした値が入ってきたとき、Apache はデフォルトで 404 Not Found を返します。実際には勝手に URL デコードして解釈しているんでしょうか。

これを解決するには httpd.conf に以下の記述を行います。

1
AllowEncodedSlashes On

実際にバーチャルホストの設定内で組み込む場合は以下です。

1
2
3
4
5
6
7
8
9
<VirtualHost *:80>
        DocumentRoot "/var/www/weble.org/app/webroot"
        ServerName weble.org
        AllowEncodedSlashes On
        <Directory "/var/www/weble.org/app/webroot">
                order deny,allow
                allow from All
        </Directory>
</VirtualHost>

.htaccess が使える環境の場合はそこに追加しても良いです。

コメント

コメントは受け付けていません。