2014年6月25日水曜日

DirectoryIndex と mod_rewrite を使うときの注意



DirectoryIndex と mod_rewrite を使うときに / で終わるパス(ディレクトリ)を指定したときの動作には注意が必要です。





mod_rewrite で、index.html → index.php とか index.rb とかしている場合



http://example.com/index.html


にアクセスすると



http://example.com/index.php


と通常はURLがリライトされます。ところが



http://example.com/


とindex.htmlを省略してアクセスすると



403 forbidden


が出る場合があります。



http://example.com/ → http://example.com/index.html → http://example.com/index.php


上記のような連続したURLのリライトを期待したのですが 403 と怒られました。





どうもこれは、DirectoryIndexの設定で index.html を参照するように設定しているためで


単にURLを index.html とリライトするのではなく


実際に index.html ファイルの有無を判断するようで


mod_rewirte でURLの書き換えが起こる前に


先にindex.htmlのチェックし、ファイルがないので 403 forbidden となるようです。


手っ取り早く対処するには、ダミーのindex.htmlを置くのが簡単です。





0 件のコメント: