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として解釈されているように見受けた。

関連するタグ

Apache, RewriteRule