2007年4月27日金曜日

PATH_INFOに「%2F」が含まれていると404エラーになる(AllowEncodedSlashesで 解決)

SEO対策として、PATH_INFOを使ってパラメータをphpスクリプトに受け渡す方法が一般的になりつつあります。

参考:phpスクリプトに拡張子なしでアクセスするためには

自分もこれまでさんざんこのやり方を使っていましたが、つい最近、PATH_INFOの中に「%2F」が含まれているとapacheが404エラーを返すことを知りました。ちなみに「%2F」は「/(スラッシュ)」にURLエンコードをかけた後の文字列です。

http://www.example.com/product.php/id/1234/code/ABC%2FDEF

たとえば上記の例。apacheの設定がデフォルト状態だと404エラーになります。
これを解消するにはAllowEncodedSlashesをOnにします。

AllowEncodedSlashes On

httpd.confやVirtualhostディレクティブにこの記述を追加してapache再起動します。
なお、この設定はApache 2.0.46以降でのみ有効だそうです。あとmod_rewriteなどを使うときにもAllowEncodedSlashesをOnにしていないとエラーが起こるようです。

1 件のコメント: