Переписать URL.htaccess, чтобы немедленно остановить bingbot
Я хочу полностью и немедленно прекратить бингбот.
Я хотел бы сделать это с помощью mod_rewrite в.htaccess.
У меня есть эти правила...
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^bingbot/.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bingbot/.* [OR]
RewriteRule ^(.*)$ http://go.away/ [L]
... но они не работают. То, что я вижу в своих журналах, это тип записи...
msnbot-207-46-195-224.search.msn.com - - [11/Jul/2011:15:07:27 -0700] "GET /index.php?url_mainnav=13&url_subnav=131&url_expand=394,949,4631&url_startrow=110 HTTP/1.1" 403 502 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
... Я пробовал множество вариантов регулярного выражения для HTTP_USER_AGENT, но не могу получить нужный ответ, поэтому я предполагаю, что действительная структура правил, которые я использую, неверна.
Может кто-то указать мне верное направление?
Между прочим, я знаю, что такие вещи намного лучше сделаны в iptables и т. Д., И я также знаю о robots.txt. Это общий хостинг, поэтому у меня нет контроля над iptables, и я не хочу ждать шесть-восемь часов, пока bingbot перечитает robots.txt.
Ну, все идет вперед. Принимая во внимание ответ, я изменил правила переписывания на:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^bingbot/.* [OR,NC]
RewriteCond %{HTTP_USER_AGENT} .*bingbot/.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Bingbot/.* [OR]
RewriteRule ^(.*)$ http://go.away/ [L]
Записи для bingbot все еще появляются в журнале доступа, но это заставило меня понять, что (я думаю) я неправильно интерпретирую коды ответов HTTP, показанные в журналах. Кажется, что 403 "Запрещено", так что, возможно, мое правило здесь делает то, что я хочу (сообщая бингботу уйти), но запрос регистрируется? Я думал, что журнал не будет отражать вещи, которые были отодвинуты mod_rewrite? Было бы интересно, если кто-то может прокомментировать, поскольку я все еще не на 100%, что я избавляюсь от доступа с помощью bingbot.
1 ответ
Итак, регулярное выражение в вашем RewriteCond требует, чтобы пользовательский агент запускался с bingbot. Вот что делает ^ в регулярном выражении.
^bingbot/.*
Поскольку User Agent (из вашего примера журнала) не начинается с этого, он не будет соответствовать и пропустит Правило.
"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
Удалите ^ и он должен работать, хотя я не проверял.
Совет: вы можете удалить дублирование из ваших RewriteConds, сделав совпадение без учета регистра с помощью опции [NC].
RewriteCond %{HTTP_USER_AGENT} ^bingbot/.* [OR,NC]