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

nid*_*idi 7 directory logging apache-2.2

如何获取 apache 以防止基于目录记录 http 请求?我想做类似的事情

<IfModule mod_userdir.c>
    UserDir public_html

    <Directory /home/*/public_html/nolog>
        Options NoAccessLog
    </Directory>
</IfModule>
Run Code Online (Sandbox Code Playgroud)

Luk*_*che 11

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

<IfModule mod_userdir.c> 
    UserDir public_html 

    SetEnvIf Request_URI "/nolog" dontlog
    CustomLog /var/log/apache2/useraccess_log combined env=!dontlog
</IfModule> 
Run Code Online (Sandbox Code Playgroud)

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

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

在下一行中,选项“env=!dontlog”告诉 CustomLog 指令记录客户端访问,除非设置了变量 dontlog。这 !否定指令。如果你离开!以便它读取“env=dontlog”,而不是记录对请求的 URL 中包含“/nolog”的路径的访问。

编辑:我删除了“/nolog”正则表达式中的 ^ 以处理您的示例并添加了更多解释。