我很难尝试从 Apache 访问日志中排除一些行。
我使用的是 Apache Windows 2.4.25 64 位
我试过:
SetEnvIf Request_URI ".*" dontlog
LogFormat "%{%d/%m/%y %H:%M:%S}t [%h %{tid}P] %>s \"%r\" (%bb/%Dmis)" common
CustomLog "${LOGROOT}/ApacheAccess.log" common env=!dontlog
运行良好-access.log 中没有记录任何内容
但是如果我尝试同样的事情:
SetEnvIf Request_URI ".*Check.*" dontlog
它似乎被忽略了,即我得到了如下的行:
29/11/19 13:43:51 [127.0.0.1 15896] 200 “GET /zerofp/server?检查 HTTP/1.1”(17b/177042mis)
我错过了什么?如何正确过滤行?
答案1
好的,这不起作用的原因是因为Request_URI
它不包含查询字符串,所以正则表达式永远不会匹配。
具体操作如下:
# Set the "dontlog" environment variable when the query string matches one of multiple patters to filter out access.log
RewriteCond %{THE_REQUEST} ".*?Check.*" [OR]
RewriteCond %{THE_REQUEST} ".*someothercond*"
RewriteRule .* - [E=dontlog:yes]
LogFormat "%{%d/%m/%y %H:%M:%S}t %r" common
CustomLog "${LOGROOT}/ApacheAccess.log" common env=!dontlog