mod-rewrite ログ出力とデバッグ方法

投稿者: | 6月 3, 2020

Apache httpdサーバーで使用する mod-rewrite は、非常に高機能でコンテンツの幅を広げる機能ですが、その機能の多さから設定が難しく、エラーになることも多くあります。

今回は、この mod-rewrite の動作確認に必要な、ログの出力方法とデバッグを助けるツールを紹介します。

mod-rewrite のログ出力

mod-rewrite の動作ログを出力するには、以下の設定を httpd.conf などに追加します。

Apache httpd 2.4系

Apache httpd 2.4系では、rewrite:trace[1~8] の記述を使用します。

LogLevel debug rewrite:trace2

一番多くの情報を出力するのは rewrite:trace8 ですが情報が多くなりすぎるため、rewrite:trace2 くらいからはじめて、必要に応じて数字を大きくするのがデバッグ効率が上がります。

mod-rewriteのログは Apache httpd のエラーログ(error_log)に出力されます。

Apache httpd 2.2系まで

Apache httpd 2.2系までは、RewriteLog と RewriteLogLevel という記述を使用します。

RewriteLog      /var/log/httpd/rewrite.log
RewriteLogLevel 9

RewriteLogLevel は、1から9まで設定でき、9が一番多くの情報を出力します。
これも、前述の rewrite:traceX 同様、情報が多くなりすぎるので、最初は小さい数字から始め、デバッグの内容に合わせて大きくするのがオススメです。

ログのサイズと負荷

mod-Rewrite のログを有効にすると、多くのログを出力します。
ストレージを圧迫し、サーバーの負荷も高くなりますので、必要なときのみ mod-rewrite のログを有効にするようにします。

mod-rewrite (.htaccess) のテストツール

.htaccess で記述した mod-rewrite が正しく機能しているかを確認するツール(サイト)があります。

htaccess tester

このツールを使用すると、mod-rewriteの構文が正しいかなどの試験ができます。