- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Apacheのhttpd.confのCustomLogに、環境変数を複数指定したい)
Apacheのhttpd.confのCustomLogに環境変数を複数指定したい
このQ&Aのポイント
- CustomLogの設定に複数の環境変数を指定する方法について質問します。
- SetEnvIfとCustomLogを組み合わせて、特定の条件に一致したリクエストのログを取得する方法について教えてください。
- また、セットアップしたい条件に一致しないリクエストのログを取得する方法も知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#51778
回答No.2
失礼いたしました。 QNo.3601206の一部をコピーして使用しましたので、ご指摘のように先頭にマッチさせるメタ文字になってしまったものと思います。 「^/string/」という記述を行なって、stringの否定を表現したかったものです。 以下の記述ではどうなりますでしょうか? SetEnvIf Remote_Addr "192.168.0." nolog SetEnvIf Request_URI "^/wmv/" nolog (または "^/.wmv/") CustomLogには env=!nolog のようにenvを否定形で指定する。
その他の回答 (1)
noname#51778
回答No.1
投稿文章の2)と3)とも環境変数が同一にしてある意味が理解できませんでした。 たとえば次のように設定するとどのようになりますか?。 #排除するアドレス SetEnvIf Remote_Addr "192.168.0." nolog #排除するファイルをXORで定義する SetEnvIf Request_URI "^\.wmv$" nolog 上記のように環境変数を定義しておいてCustomLogには env=!nolog のようにenvを否定形で指定する。
お礼
take_chanさん。早速のご回答ありがとうございます。 > 投稿文章の2)と3)とも環境変数が同一にしてある意味が理解できませんでした。 これは判定の条件式が2)と3)で異なるので、環境変数Bは2)と3に一致(または不一致)させたい時に、環境変数Xは1)と2)と3)に一致(または不一致)させたい時に使えるようにしてあります。 > たとえば次のように設定するとどのようになりますか?。 > #排除するアドレス > SetEnvIf Remote_Addr "192.168.0." nolog > #排除するファイルをXORで定義する > SetEnvIf Request_URI "^\.wmv$" nolog サンプルを考えてくださってありがとうございます。 これなら確かに 「家庭内LANの接続を記録しない」 「WMV以外のリクエストを記録しない」 ですからWMVだけの記録が取れそうですね。 早速試してみたいと思います。どうもありがとうございました。 確認が取れたら質問を締め切らせていただきます。
補足
すいません、回答へのお礼を書いたあとに確かめたのですが、 wmvファイル以外のものも記録されるようになってしまいました。 確認したいのですが、^は先頭にマッチさせるメタ文字ではないでしょうか? というのも、リファラーの制限などでよく SetEnvIf Referer "^http://www\.foo\.jp" このようなものを見かけます。この時の^は「以外」ではなく「先頭」ですよね。 以外を示すメタ文字があればそれで解決しそうな気がしますが、 探す能力に乏しいのか見つかりません。 ご存知であればよろしくお願いいたします。