3

经过一番搜索,我找不到仅将 404 特定错误消息重定向到不同日志文件(不是 error_log)的方法。请让我知道是否有办法实现这一目标。快速帮助将不胜感激。提前致谢。:)

4

1 回答 1

3

CustomLog指令有一个env=可以添加到末尾的参数。然后,您可以使用 mod_rewrite 设置该环境变量。所以在你的服务器/虚拟主机配置中,你会有这样的东西:

RewriteEngine On

# exclude directory index
RewriteCond %{REQUEST_URI} !/index\.(php|html?)$
# exlcude auto-index of directories
RewriteCond %{REQUEST_URI} !/$
# if the request is not a file, directory, or symlink
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# set the "notfound" environment variable
RewriteRule ^ - [E=notfound:true,L]

CustomLog /var/log/apache2/404-requests.log common env=notfound
CustomLog /var/log/apache2/requests.log common env=!notfound

所以自定义日志文件/var/log/apache2/404-requests.log只有在设置环境变量时才会被记录notfound,而日志文件/var/log/apache2/requests.log只会被记录到其他所有内容。自动索引和目录索引有点做作,这就是为什么您需要从notfound条件集中排除它们。

于 2013-09-19T09:47:51.020 回答