如何对 Apache CustomLog 同时施加两个条件?

如何对 Apache CustomLog 同时施加两个条件?

我目前有针对静态页面和动态页面的单独访问日志。我的httpd配置文件有(内部<虚拟主机>):

<LocationMatch "^/(img|js|css|thumb|banner)/(.+)$">
SetEnv static 1
</LocationMatch>

CustomLog /var/log/apache2/gopal.log myCustom env=!static
CustomLog /var/log/apache2/gopal-static.log myCustom env=static

我想补充一下

SetEnvIf Remote_Addr "127.0.0.1" dontlog
CustomLog /var/log/apache2/gopal.log myCustom env=!dontlog

,但找不到使用 CustomLog 的示例表达式=参数并且无法猜测工作表达式: expr=!(reqenv('static')||reqenv('dontlog')) 产生

语法错误,意外的 T_OP_OR

答案1

函数reqenv必须与某些东西进行比较,您不能像代码那样只检查环境变量是否已设置。我承认错误消息并不是特别有启发性 :-)

以下内容应该适合您:

SetEnvIf Request_URI ^/(img|js|css|thumb|banner) static=yes
SetEnvIf Remote_Addr "127.0.0.1" dontlog=yes

CustomLog logs/access_log myCustom expr=!(reqenv('static')=='yes'||reqenv('dontlog')=='yes')

相关内容