使用.htaccess从子域中排除Crawler

时间:2014-07-01 09:44:48

标签: php apache .htaccess mod-rewrite web-crawler

我想阻止Crawler抓取子域tools.subdomain.com我在互联网上找到了一个片段,其中显示了重写规则:

RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot|Baiduspider) [NC]
RewriteRule .* - [R=403,L]

如何设法在此子域上阻止这些Crawler,或者只允许当前最新的浏览器访问子域?我想通过.htaccess进行管理,因为并非所有抓取工具都接受robots.txt。对于robots.txt,我有以下重写条件。

RewriteCond %{HTTP_HOST} =testing.subdomain.com
RewriteRule ^robots\.txt$ /robots_testing.txt [L]

干杯

Sven

1 个答案:

答案 0 :(得分:3)

这取决于您的服务器布局。

隔离子域名

如果子域有自己的文档根,那么它就足以将.htaccess文件放在子域的文档根目录中,并编写你在htaccess文件中指定的指令:

RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot|Baiduspider) [NC]
RewriteRule .* - [R=403,L]

共享子域

如果子域名使用与顶级域名相同的文档根目录,则可以在上面添加RewriteCond

RewriteCond %{HTTP_HOST} ^tools\.subdomain\.com$
RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot|Baiduspider) [NC]
RewriteRule .* - [R=403,L]

请注意(1):需要语法^tools\.subdomain\.com$才能完全匹配主机的整个名称;此外,由于它是正则表达式,因此必须用反斜杠转义点。

请注意(2):最后RewriteCond的语法可能会根据您要排除的机器人而有所不同。