避免将某些丢失的文件记录到 Apache2 错误日志中

Pet*_*aný 7 log-files logging apache-2.2

我想避免将一些丢失的文件(给出 404)记录到 Apache2 错误日志中。

我想在我的插件的 Eclipse 更新站点上执行此操作。问题是 Eclipse P2 代码试图访问其元数据文件,如 content.xml、content.jar、digest.zip 和其他一些文件,这些文件在我的站点上不可用。当 P2 发现这一点时,它最终会访问我提供的 site.xml。总而言之,一切正常……但我有很多行,例如:

[Mon Jul 06 21:46:46 2009] [error] [client 195.91.79.90] File does not exist: ...htdocs/stable/content.jar
Run Code Online (Sandbox Code Playgroud)

在我的 error.log 文件中,这对我帮助不大。

我想到的一个解决方案是让 Apache 通过 grep(通过管道日志记录)进行日志记录,但我正在寻找更好的解决方案。

我正在考虑使用SetEnvIf 指令标记这些请求,并跳过标记请求的错误日志,但 ErrorLog 指令不支持。

还有其他想法吗?

Pet*_*aný 8

我找到了一个适合我的解决方案。我将这些行添加到 .htaccess 中:

# Don't log missing files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(artifacts\.jar|content\.xml|content\.jar)$ - [R=404,L]
Run Code Online (Sandbox Code Playgroud)

它使用 mod_rewrite。R=404 表示当客户端访问任何提到的文件时发送 404 Not Found 状态代码。

RewriteCode 用于确保该文件确实不存在。如果我将这些文件之一放入目录中,它将照常提供。

这很好用:提到的文件不再记录到 error.log(这是我的目标),但仍然记录在访问日志中(状态为 404)。