Apache-2.2
避免將某些失去的文件記錄到 Apache2 錯誤日誌中
我想避免將一些失去的文件(給出 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)。