我有一个作为 HTTP 服务器运行的 Apache,还有一个由同一台 Apache 机器提供的 SVN 服务器。
配置如下
<Location /repos>
DAV svn
SVNParentPath /srv/repos
</Location>
如何防止 Apache 记录所有 SVN“PROPFIND”和“OPTIONS”访问请求?
答案1
我以为没有办法做到这一点,但结果发现可能有。 CustomLog 指令可以查找环境变量的存在,以决定是否记录请求。 将它与 mod_rewrite 结合起来设置该环境变量,我想您已经找到了想要的东西。
RewriteEngine On
RewriteCond %{REQUEST_METHOD} '^(OPTIONS|PROPFIND)$'
RewriteRule ^/repos - [E=skiplog:1]
CustomLog /log/file/path common env=!skiplog
我还没有测试过。不过从我读到的文档来看,这应该可行。
答案2
这与 Rewrite 方法类似,但只是使用 SetEnvIf 指令在相关的 vhost 中标记 OPTIONS 和 PROPFIND 请求,然后我们将 env 规则添加到访问日志以将它们从访问日志中排除。
SetEnvIf Request_Method "OPTIONS" dontlog
SetEnvIf Request_Method "PROPFIND" dontlog
CustomLog /path/to/access_log combined env=!dontlog
我们采用了这种方式来构建一个进行过度轮询的持续构建系统。实际上,我们正在努力改变现状,使用 SVN 提交后钩子来通知构建系统变更。
答案3
您应该能够添加:
ErrorLog /dev/null
CustomLog /dev/null combined
无论您使用什么 vhost 容器。如果您没有为 SVN 使用 vhost,那么执行此操作可能会很困难。