Apache2.4.x on Ubuntu12.04 で、mod_rewriteのログを取得
Apache2.4.x on Ubuntu12.04でmod_rewriteのログを取得したいときの設定。
2.2と2.4は、大きく違うんですね。追いかけてなかったから全然知らなかった。読めば、ちゃんとconfファイルにコメントされてるけど。。。
例)デフォルトサイト設定を変更する:
- /etc/apache2/sites-available/000-default.conf
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn LogLevel rewrite:trace8
trace8が一番詳しく、trace1まで段階的に絞れます。ログをみれば、毎行 traceN と表記があるので欲しいレベルに合わせるのが良さそう。
なおパフォーマンスが著しく落ちるので、trace2より大きいい値は、デバッグのみで使うようにとマニュアルに注意書きがありました。
そもそも & バージョンの違い
Rewriteモジュールが上手く動いてない気がしたのでログをとろうと思ったのですが、ちょとGoogleさんに聞いた情報が上手くいかない。どうやらバージョン番号を指定しないでRewriteだけで探してたのが原因のもよう。
Rewriteモジュールの動作を検証したかったのに、そのログを取得する方が時間がかかった。。。
- mod_rewrite on Apache2.4.x (現在のcurrent)
- http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
- LogLevel rewrite:XXXXXXX
- RewriteLog と RewriteLogLevel ディレクティブは、上記のような新しいモジュール毎ロギング設定に完全に置き換わりました(意訳)
- mod_rewrite on Apache2.2.x
- http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
- RewriteLog Directive
- RewriteLogLevel Directive
参考
- mod_rewriteがうまく動かない時のチェックポイント
とりあえず .htaccess に test とか書いてみて、500エラーが発生するかどうか見てみようというところ、目からウロコな発想でした!感謝。
- Overview of new features in Apache HTTP Server 2.4
ちゃんとCore Enhancementsにのってますね
Per-module and per-directory LogLevel configuration The LogLevel can now be configured per module and per directory. New levels trace1 to trace8 have been added above the debug log level.
その他
mod_rewrite系だと、こんなのもありました。詳細しらないので、発見しただけレベル。
- RewriteRule に [QSD] (Query String Discard) と [END] フラグが加わった
- RewriteCond で complex boolean expressions が使えるようになった
- RewriteMap の関数として the use of SQL queries が許可されるようになった
- RewriteLock ディレクティブというのも、2.4ではないようです。