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 件のコメント:
コメントを投稿