Help us understand the problem. What is going on with this article?

Apacheのrewritelogの出力方法(Apache2.2とApache2.4で違います)

More than 1 year has passed since last update.

RewriteCondRewriteRuleの条件をデバッグするときによく使うのですが、
その都度方法を調べてしまっているので備忘も兼ねて書いちゃいます。

Apache2.2Apache2.4でやり方が全然違くなってしまいました。
これからはほとんど2.4になると思うので、先に2.4の方法を記載します。

Apache2.4 での設定方法

設定方法

Apacheのconfに以下の記述を追加します。

LogLevel debug rewrite:trace8

軽く説明

Apache2.4からはRewriteLogという独立したログはなくなり、
coreモジュールのLoglevelディレクティブを使って指定する方法に変更されました。
出力ファイルは指定できず、他のログと一緒にerror_logに出るようになります。
レベルはtrace1 ~ trace8 までで、数値が大きくなるほど冗長になります。
膨大にログが出て重くなるので、デバッグ以外の目的で trace2 以上を使うのは止めた方がよいです。

公式ドキュメント

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

Apache2.2 での設定方法

設定方法

Apacheのconfに以下の記述を追加します。

RewriteLog "/tmp/httpd.rewrite.log"
RewriteLogLevel 9

軽く説明

RewriteLogLevel0~9まであり、ログの詳細レベルを指定します。
9が一番詳細で、0だと何も出力しません。

注意点(2.2と2.4共通)

  • 基本的にはVirtualHosts内に書くことが多いと思います。僕はVirtualHosts外に書いたことがありません。
  • .htaccessでは書けません。書いちゃうとInternal Server Errorになります。
  • Logが肥大化しすぎてサーバーのパフォーマンス低下を引き起こすため、デバックが終わったら設定を戻しましょう。
tomozo6
元Cobolerで金融系案件のPM。 インフラの技術に興味があって転職。 オンプレのホスティングサービスの構築,保守,運用を担当。 現在、時代の流れによりオンプレ環境を全てAWSへ移設する作業中。 全体改善,効率化,DevOpsが最近の興味関心。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away