2015-06-19 5 views
1

Я следующую запись в моем файле AwStats:Как блокировать «бот *» бот через .htaccess

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] 

испытано три регулярные выражения значения (^бот *, бот \ *, бот [*]) во второй строке, ни один из них не остановил бота.

ответ

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]

+0

Спасибо, Майк. Теперь я использую вашу первую строку, и я увижу, блокирует ли он бота или нет в течение одного или двух дней и соответственно обновляет его. Не могли бы вы рассказать о своей «рекомендации» о том, почему нужно изменить правило? Мне сказали, что используя.? для регулярного выражения будет соответствовать что угодно (даже пустое) и перенаправить на указанное условие отказа. – Envayo

+0

Я положил его в маленьком письме, потому что это не важно. Использование '^' просто означает, что тестовая строка начинается с чего-то. По сути, они те же, но я думаю, что с моим предложением есть повышение производительности. –

+0

Майк, кажется, бот все еще посещает мой сайт. Я вижу в файле Awstats, что он посетил и создал хиты сегодня. Вот мой .htaccess код еще раз: RewriteEngine На RewriteCond% {HTTP_USER_AGENT}^паук [NC, OR] RewriteCond% {HTTP_USER_AGENT}^бот [NC] RewriteRule.? - [F, L] – Envayo

1

Мы можно заблокировать с помощью ботов бота точное имя в файле .htaccess. Ниже пример определенно поможет вам, в настоящее время я использую одну и ту же настройку, сохраняя свой серверный ресурс.

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> 

Сообщите мне, если у вас есть вопросы.