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を置くのが簡単です。