2017-08-31 108 views
1

我用下面的代碼在我的httpd.conf文件阻止不需要的機器人和參觀者(如打非現有的WP-登錄頁面):想空文件夾返回的404,而不是403

SetEnvIf User-Agent BadBot GoAway=1 
Order allow,deny 
Allow from all 
Deny from env=GoAway 

這會給他們一個403 Forbidden錯誤。在我的自定義403頁面上,我將IP保存到數據庫以永久阻止/禁止他們使用聯繫表單等。

這很有效。但是我注意到有些用戶因爲訪問了一個空文件夾而被阻止。這是不需要的。

使用Options -Indexes我阻止了目錄查看,但是這也會輸出一個403 Forbidden錯誤。

問題:如何在訪問空文件夾而不是403時顯示404錯誤?

回答

1

既然你似乎有機會獲得httpd.conf,那麼你可以這樣做在服務器配置或虛擬主機的上下文中的以下內容:

RewriteEngine On 
RewriteCond %{LA-U:REQUEST_FILENAME} -d 
RewriteRule /. - [R=404] 

另外,靠近你.htaccess文件的頂部(因爲你已經標記你的問題.htaccess),包括以下的(這也將在目錄環境中工作):

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule . - [R=404] 

的目的模式/.(或.)是爲了防止爲文檔根服務的404。

根據你在哪裏定義你的定製ErrorDocument,你可能會得到不同的404響應每種方法。


或者,在您的自定義403,執行相同的檢查,爲「BadBot」,如果有匹配僅記錄條目。或者,只有在請求未映射到目錄時才記錄條目。