如何在访问某些目录时禁用 apache 日志记录?

如何在访问某些目录时禁用 apache 日志记录?

如何让 apache 阻止基于目录记录 http 请求?我想做类似的事情

<IfModule mod_userdir.c>
    UserDir public_html

    <Directory /home/*/public_html/nolog>
        Options NoAccessLog
    </Directory>
</IfModule>

答案1

您可以在请求特定 URL 时设置环境标志,并据此过滤日志记录:

<IfModule mod_userdir.c> 
    UserDir public_html 

    SetEnvIf Request_URI "/nolog" dontlog
    CustomLog /var/log/apache2/useraccess_log combined env=!dontlog
</IfModule> 

所有相关阅读材料可在此处找到http://httpd.apache.org/docs/2.2/env.html “使用环境变量 - 条件日志记录”部分

这两行的作用是,每当客户端请求包含字符串“/nolog”的 URL 时,它就会设置环境变量 dontlog。

在下一行中,选项“env=!dontlog”告诉 CustomLog 指令记录客户端访问,除非设置了变量 dontlog。! 否定了该指令。如果您保留 ! 以便它读取“env=dontlog”,那么它将仅有的日志访问请求的 URL 中包含“/nolog”的路径。

编辑:我删除了“/nolog”正则表达式中的 ^ 以适合您的示例,并添加了一些解释。

相关内容