htaccess中忽略了Bot-blocking代码?

时间:2015-07-28 20:33:56

标签: php wordpress apache .htaccess mod-rewrite

我已经试图解决这个问题好几天了,但找不到答案。在我正在使用的共享主机帐户上,我想修改.htaccess文件以阻止某些机器人访问该网站。这是我使用过的代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
SetEnvIfNoCase User-Agent .*dotbot.* bad_bot
SetEnvIfNoCase User-Agent .*gigabot.* bad_bot
SetEnvIfNoCase User-Agent .*ahrefsbot.* bad_bot
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

这是一个WordPress网站。奇怪的是,它似乎只是机器人阻挡部分被忽略了。我尝试过使用302重定向并且工作正常,因此正在读取和处理文件。

我也注意到这段代码似乎在某些网站上有效,但对其他网站则无效。这可能与插件域有关吗?但是,似乎代码在某些主域上也不起作用。

.htaccess文件(连同域和wordpress安装)位于home/maindomain/addondomain,而不是home/maindomain/public_html。在我托管的其他域的目录中还有其他.htaccess个文件,但只有与此文件位于同一层级的文件,例如:

folder1/.htaccess

folder2/.htaccess

thisfolder/.htaccess

但其他人都没有处理机器人的任何代码,所以我认为不应该受到任何干扰。

我也试过使用不同的语法但没有成功,例如:

RewriteCond %{HTTP_USER_AGENT} .*dotbot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*gigabot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*ahrefsbot.* [OR]
RewriteRule ^(.*)$ http://www.example.com/ [L,R=301]

我尝试的另一件事是将机器人阻挡部分移动到wordpress特定代码下面。我还尝试更改Rewritebase /

的展示位置

我回复了我的上一个问题,说可以通过robots.txt完成。我宁愿不这样做,因为它会破坏我试图实现的目的。

我收到的另一个答案建议在机器人名称之前和之后删除.*。我列出的名字只是全名的一部分,所以我想我会使用这些通配符,还是会自动添加这些命令?

1 个答案:

答案 0 :(得分:0)

您知道可以使用robots.txt文件控制大部分机器人吗?这是指示这些机器人不访问您网站某些部分的更好方法,因为它甚至会阻止他们尝试获取网址,因此您也不需要阻止它。