1

我正在尝试根据目录访问来打破我网站的日志记录,因此我正在寻求对这个答案(或这个答案)的详细说明:在哪个文件中放置建议的答案?

我将以下内容放入我的/etc/apache2/apache2.conf(实际上是通过 an Include my-logging.conf):

SetEnvIf Request_URI "^/download/.+$" download_access
CustomLog /home/jamie/apache-logs/download.log common env=download_access

目录/home/jamie/apache-logs/和其中的文件是通用可写的,但是当我通过浏览器 ( http://download/index.html) 访问资源时,主访问日志 ( /var/log/access.log) 会更新,但不是我希望的日志:/home/jamie/apache-logs/download.log保持不变。

我有理由确定mod_setenvif已经启用:

$ sudo a2enmod setenvif
Module setenvif already enabled

我怎样才能使这项工作?

4

2 回答 2

2

拍头!

正则表达式错误:

SetEnvIf Request_URI "^/download/.+$" download_access

应该:

SetEnvIf Request_URI "^/download/.*$" download_access

注意*+

于 2013-04-23T16:01:59.910 回答
1

编辑:

不,这是正则表达式。打头是对的。


您是否查看/etc/apache2/apache2.conf过其他包含的站点文件中或其他包含的位置文件(可能/etc/apache2/sites-enabled/foo.conf/etc/apache2/conf/foo.conf或其他什么......我使用不同的发行版)具有不同的CustomLog 定义?

很可能有一些东西压倒了你的陈述。放置CustomLog指令的最佳位置是在<VirtualHost>定义站点的节中。这样,该指令将具有最高优先级,因此它将覆盖服务器范围的设置。我认为正在发生的是您的定义正在为服务器设置默认值,但更具体的 customlog 语句位于 VirtualHost 内部并覆盖它。

于 2013-04-23T14:58:02.670 回答