Переписать 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]
Другие вопросы по тегам