.htaccessで末尾に/が付くパターンのURLを書き換えようとしたところ、どうしても403エラーになってしまい困っていた。
# ファイルとディレクトリが存在する場合は先に解決としておく
RewriteCond %{REQUEST_FILENAME} -d [or]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ %{REQUEST_FILENAME} [L]
# aaa/ にアクセスがあったら bbb.phpを実行したい
RewriteRule ^aaa/ aaa/bbb.php [L]
LogLevel rewrite:trace3してみたところ、どうやら.htaccessやディレクティブなど、ディレクトリコンテキストの場合、mod_rewriteが書き換えたURLを破棄してDirectoryIndexの動作で index.html や index.php へのアクセスを行ってしまっている模様。
ならば、と一行目のRewriteCond %{REQUEST_FILENAME} -d [or]を削ったところ動作はしたが、うーん、まあどちらにしてもディレクトリだけあってファイルが存在しなければ結果的にはコンテンツを返せないわけだから、-fの行だけで良いのか。 |