Apacheの内部リライトでphpが実行されない場合
ハマったのでメモ。
あるhtmlページにアクセスした際に、指定のphpにアクセスさせて、phpの処理結果をレスポンスで返すようにしたく、次のようにApacheの設定を組んだ。
# /archives/yyyy/mm/dd/index.htm をキャプチャして PHP に渡す
RewriteRule ^archives/([0-9]{4})/([0-9]{2})/([0-9]{2})/index\.htm$ hoge.php?year=$1&month=$2&day=$3 [L]
しかし、レスポンスはphpの処理結果が返ってこず、phpのコードがそのまま帰ってきた。
そこで302リダイレクトに直すと、phpの処理結果が返ってきた。
RewriteRule ^archives/([0-9]{4})/([0-9]{2})/([0-9]{2})/index\.htm$ hoge.php?year=$1&month=$2&day=$3 [R=302,L]
以上より、内部リライトだとどうもhtmlとして解釈されているように見受けた。