如何同时为 Apache CustomLog 强加两个条件?

mka*_*ama 5 httpd.conf apache-2.4

我目前有静态和动态页面的单独访问日志。我的httpd.conf有(在<VirtualHost> 内):

<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
Run Code Online (Sandbox Code Playgroud)

我想补充它

SetEnvIf Remote_Addr "127.0.0.1" dontlog
CustomLog /var/log/apache2/gopal.log myCustom env=!dontlog
Run Code Online (Sandbox Code Playgroud)

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

语法错误,意外的 T_OP_OR

Unb*_*ver 6

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')
Run Code Online (Sandbox Code Playgroud)