我有一臺機器,我租賃的IP地址必須先前已分配給某種鏈接垃圾郵件公司。該公司有數百個域名仍然可以解析我的服務器的IP地址,而谷歌等也在不斷試圖用他們的漫遊器(數十萬頁)來索引該網站。我一直未能讓鏈接垃圾郵件發送者更改其DNS記錄以解決其他問題。精細。返回410 for robots.txt
我決定我可以使用mod_rewrite以相當直接的方式處理這個問題:我希望任何不包含我的域名之一的請求返回410,除非請求是/robots.txt
。對於機器人文件,我想返回一個簡單的文件,該文件不允許使用200的所有文件。按照我的想法,我可以快速地將機器人熄滅並恢復正常。
我mod_rewrite的配置是這樣的:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^.*foo\.com$
RewriteRule ^/robots\.txt$ /robots-off.txt [L]
RewriteCond %{HTTP_HOST} !^.*foo\.com$
RewriteRule !^/robots\.txt$ - [G]
所有我可能在這個IP主機域的某處歸入/在foo.com
域。因此,我希望第一條規則告訴Apache輸出/robots-off.txt
的內容時,只要對於除我自己以外的任何域的/robots.txt
發出請求,就會輸出200的內容。
令人遺憾的是,每個請求的結果都是410,所以機器人永遠不會有機會了解爲什麼他們應該停止對整個站點建立索引。以下是我查詢錯誤主機時的迴應:
The requested resource<br />/robots-off.txt<br />
is no longer available on this server and there is no forwarding address.
Please remove all references to this resource.
這已經持續了一個多星期,沒有終點。第一條規則正在運行,但[L]似乎被忽略,然後運行第二條規則。我不明白爲什麼。