apache 2.2.x にて SetEnvIf を使って and条件 を作るには
apache使ってると、「A and Bの条件、またはCの条件の時にログを分けたい」とあるのですが、SetEnvIfにてそれを実現するネタ。とりあえず例に出すの条件としては下記条件のいづれかを満たせばログを分ける設定という事で。
これをSetEnvIfで書くとこうなる。
# iOS UA And /api/ Access SetEnvIf User-agent "(iPhone|iPod|iPad)" iOS_UA SetEnvIf Request_URI "^/(api)(/.*)?$" api_DIR SetEnvIf iOS_UA "^$" !api_DIR SetEnvIf api_DIR "1" iOS_log # /ios/ Access SetEnvIf Request_URI "^/(ios)(/.*)?$" iOS_DIR SetEnvIf iOS_DIR "1" iOS_log # If you fall into either of these conditions, distributes the log CustomLog /apache_log/ios/access_log logformat env=iOS_log CustomLog /apache_log/normal/access_log logformat env=!iOS_log
「"^$"」というのは、「環境変数に何も定義されてない」という条件に使うとの事。詳しいことはあとで追記しまっす。とりあえず、メモ代わりで。
個人的にはもう少しスマートに書けるんじゃないかなとは思ってはいますが…あと、Apache2.4からif文のディレクティブが強化されてるので、もっと書きやすいかも。まあnginxがもっと上を行ってるのかもしれないけど…