如何通过REMOTE hostname / domain来阻止Apache中的所有虚拟主机的Spider / Scrapers?

我已经看到了很多robot.txt的东西,还有一些mod改写的解决scheme,看起来很有前途……但是一直没能find一个简单的解决scheme来阻止Spiders / Scrapers /无论我想阻挡谁…我宁愿做这个主机名/域,因为它似乎比依靠用户代理等更简单…

例如,说我在Apache日志中看到这个

msnbot-207-46-192-48.search.msn.com - - [07/Dec/2011:23:01:41 -0500] "GET /%3f/$/bluebox/blog/2011/iphoto/ HTTP/1.1" 404 366

好的…我想阻止*.search.msn.com来到这里,或任何我的网站 – 在我的任何文件夹 – VHOST或其他…

通常情况下,我有很多<VirtualHost *.80>的设置,并不想重复每个主机的configuration。在同样的情况下,我有很多DocumentRoot的…并在其中每个文件,又名.htaccess真的不是一个选项..

我一直在使用httpd.conf中的东西,类似于…

 RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^BadBot [OR] RewriteRule ^(.*)$ http://go.away/` 

我如何使用UseCanonicalName On提供的主机名来覆盖 – Deny all我想要的域名

可能不是最好的主意,因为Apache将不得不为每个请求做一个查询。

为什么不用IPtables呢?

UseCanonicalName是服务器主机名,而不是客户端。

只要在虚拟主机中没有Order指令,就可以在你的全局configuration中正常工作。

 Order Allow,Deny Allow from all Deny from search.msn.com