Home > tips > 画像ファイルやローカルからのアクセスをログに記録しない

画像ファイルやローカルからのアクセスをログに記録しない

Apache で、アクセスログに画像ファイルや、CSS などを含めたくないときには、


SetEnvIf Request_URI "\.jpe?g$" image no_log

などと、書いて、


CustomLog /path/to/access.log combined env=!no_log

と、すれば良いですが、lighttpd には lighttpd-1.4.15/doc/accesslog.txt を見ても、選択的なアクセスログ設定には触れられていません。

logrotate の処理中に wrapper スクリプトを使うのも何ですし、どうしたもんかと思いましたが、ふと、lighhttpd には PCRE を利用してコンフィグを正規表現でガリガリ書けることを思い出しました。

と、いうことで実際に書いてみたら、期待通りの動作をしました。


$HTTP["remoteip"] !~ “^(127\.|192\.168\.)” {
$HTTP["url"] =~ “/[^/.]*(\?|$)” {
accesslog.filename = “/path/to/access.log”
}
}

上記では、拡張子が無いファイルへのリクエストのみログに記録しています。
なお、remoteip と url の入れ子を逆にしたら上手く動作しませんでした。

tips

  1. コメントはまだありません。
  1. No trackbacks yet.