Apache-2.2

避免將某些失去的文件記錄到 Apache2 錯誤日誌中

  • September 13, 2014

我想避免將一些失去的文件(給出 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

在我的 error.log 文件中,這對我沒有多大幫助。

我想到的一個解決方案是讓 Apache 通過 grep(通過管道日誌記錄)進行日誌記錄,但我正在尋找更好的解決方案。

我正在考慮使用SetEnvIf 指令標記這些請求,並跳過標記請求的錯誤日誌,但 ErrorLog 指令不支持。

還有其他想法嗎?

我找到了一個適合我的解決方案。我將這些行添加到 .htaccess 中:

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

它使用 mod_rewrite。R=404 表示當客戶端訪問任何提到的文件時發送 404 Not Found 狀態程式碼。

RewriteCode 用於確保該文件確實不存在。如果我將其中一個文件放入目錄中,它將照常提供。

這很好用:提到的文件不再登錄到 error.log(這是我的目標),但仍然登錄到訪問日誌(狀態為 404)。

引用自:https://serverfault.com/questions/36589