mod_rewriteでログ出力をして500エラーを調査する方法

.htaccessでのmod_rewriteが原因で、Internal Server Error 500が発生してしまったときには、mod_rewriteのログを出力するのをおすすめします。実はログ出力ができるんです。

設定方法:やり方は簡単

やり方は簡単です。
Apacheの設定ファイル(httpd.conf)に下記を追記すればOK。

RewriteLog      "/usr/local/apache2/logs/rewrite.log"
RewriteLogLevel 9

ロギングのレベルは0から9までありますが、今回は詳細を全部だす9に設定しています。
調査が終わったらログをOFFにしておくことをお忘れなく。

ちなみに自分の問題は…

ちなみに私が今回ぶちあたったのは、CakePHPの.htaccessで Internal Server Error 500 が発生してしまいました。

1つずつルールを消して確認したところ、『RewriteRule (.*) app/webroot/$1 [L]』の箇所が悪さしているようで。

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

ログ出力をさせてみたところ以下の感じに・・・ 無限ループに突入している感ですね。オーマイガ。

[Wed May 13 11:23:10 2015] [error] [client 172.18.74.18] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://10.0.0.152/

というわけで、mod_rewriteでログ出力をしてInternal Server Error 500を調査する方法でした。

コメントを残す

メールアドレスが公開されることはありません。