我的Awstats文件中有以下条目:
Unknown robot (identified by 'bot*')
如何阻止此机器人?
我分别尝试了以下内容,但似乎都没有抓住它:
RewriteCond %{HTTP_USER_AGENT} ^bot*
RewriteCond %{HTTP_USER_AGENT} bot\*
RewriteCond %{HTTP_USER_AGENT} bot[*]
以下是我正在使用的完整.htaccess代码:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^bot*
RewriteRule .? - [F,L]
在第二行测试了三个正则表达式值( ^ bot * , bot \ * , bot [*] ),没有一个停了机器人。
答案 0 :(得分:3)
星号(*
)不是文字。 AWStats只是声明它使用该特定规则来检查请求是否是由机器人做出的。在您的情况下,bot*
表示用户代理字符串以bot
开头,并且找到了匹配项。
由于星号不是文字,您可以使用以下代码:
RewriteCond %{HTTP_USER_AGENT} ^bot [OR] # matches bot* (the same as ^bot.*$)
RewriteCond %{HTTP_USER_AGENT} bot$ # matches *bot (the same as ^.*bot$)
注意:我应该在这里说,最好检查您的访问日志,以确切了解这些用户代理是什么,并专门阻止它们。你不想发现自己处于阻止机器人的位置。
RewriteRule .? - [F,L]
更改为RewriteRule ^ - [F,L]
答案 1 :(得分:1)
我们可以使用.htaccess文件中的bot精确名称来阻止机器人。下面的示例肯定会帮助您,目前我使用相同的设置,它保存我的服务器资源。
SetEnvIfNoCase User-Agent "Yandex" bad_bot
SetEnvIfNoCase User-Agent "AhrefsBot" bad_bot
SetEnvIfNoCase User-Agent "MJ12bot" bad_bot
<IfModule mod_authz_core.c>
<Limit GET POST>
<RequireAll>
Require all granted
Require not env bad_bot
</RequireAll>
</Limit>
</IfModule>
如果您有任何疑问,请与我们联系。