Назад | Перейти на главную страницу

Переписать 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 - это «Запрещено», поэтому, возможно, мое правило здесь - делать то, что я хочу (сказать bingbot, чтобы он ушел), но запрос регистрируется? Я думал, что журнал не будет отражать то, что было удалено mod_rewrite? Было бы интересно, если бы кто-нибудь мог прокомментировать, поскольку я еще не на 100% избавляюсь от доступа с помощью bingbot.

Что ж, регулярное выражение в вашем RewriteCond требует, чтобы пользовательский агент начать с бингбот. Это то, что делает ^ в регулярном выражении.

^bingbot/.*

Поскольку пользовательский агент (из вашего примера журнала) не начинается с этого, он не будет соответствовать и пропускает правило.

"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

Удалите ^, и он должен работать, хотя я не тестировал.

Совет: вы можете удалить дублирование из RewriteConds, сделав совпадение нечувствительным к регистру с помощью опции [NC].

RewriteCond %{HTTP_USER_AGENT}  ^bingbot/.*         [OR,NC]