Странный случай, бот Яндекса сильно перегружает мой сайт. Проблема, конечно, моя, поскольку у меня есть несколько активных фильтров ajax на веб-сайте, но они довольно тяжелые, если их вызывать как боты.
Я пробовал со многими robots.txt
, но они не имеют никакого эффекта. Тип URL, который необходимо заблокировать, находится в следующей форме:
/de/component/customfilters/0-zu-15-eur/nKein+Herstellerf.html?custom_f_116[0]=38&custom_f_116[1]=4c&custom_f_116[2]=39&start=100
Но они URL переписаны, а не физические. Физическая папка уже заблокирована в robotx.txt
Как это можно решить и как можно проверить, не бот бот Яндекса не читает robots.txt
файл?
Каждый раз, когда я редактирую robots.txt
файл я должен перезапустить Apache? Я думаю, что нет, как Htaccess
Если ваш сайт в данный момент сильно загружен этим сканером, возможно, что внесение соответствующих изменений в ваш файл robots.txt на самом деле не поможет прямо сейчас. Прекрасные люди из команды разработчиков Яндекса утверждают, что их боты посетят robots.txt до сканирования, но я думаю, что, если сканирование началось, оно может не прочитать никаких изменений, пока в следующий раз не захочет сканировать. Они также могут иметь кешированную копию вашего robots.txt до того, как вы ее изменили. Вы можете посмотреть в журналах вашего сервера, чтобы увидеть, посещали ли они robots.txt с момента его изменения. Мое предположение, вероятно, нет.
Также существует вероятность того, что плохой бот притворяется Яндексом при сканировании вашего сайта. Плохие боты обычно игнорируют правила robots.txt. Поэтому любые изменения, которые вы делаете, могут корректно влиять на Яндекс, но не на плохих ботов.
В любом случае, если этот сканер сейчас подвергает ваш сервер большой нагрузке, тогда вы захотите заблокировать его сейчас и позже решите, хотите ли вы сделать это временным или постоянным блоком.
Одним из способов сделать это является использование директивы BRowserMatchNoCase в .htacccess
:
BrowserMatchNoCase "Yandex" bots
Order Allow,Deny
Allow from ALL
Deny from env=bots
Или вы можете использовать правило перезаписи в .htaccess
вместо:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(Yandex).*$ [NC]
RewriteRule .* - [F,L]
Неважно, переписывается ли URL-адрес или нет, бот будет сканировать любые найденные URL-адреса, если вы не запретите этот URL-адрес. Если вы запрещаете физическую папку, а URL-адрес не указывает на эту папку, то Disallow не будет работать.
Попробуйте что-то подобное в своем robots.txt
:
Disallow: /de/component/customfilters/
Это попросит всех ботов не сканировать любые URL, содержащие /de/component/customfilters/
,
Если вы хотите общаться только с яндекс-ботами, вы также можете указать это:
User-agent: Yandex # directives after this line will only apply to Yandex bots.
Disallow: /de/component/customfilters/
Если вы хотите проверить, что Яндекс читает ваш robots.txt, у них есть тестовый инструмент здесь:
http://webmaster.yandex.ru/robots.xml
(страница на русском языке)
Если вы просто хотите, чтобы Яндекс замедлялся, вы можете добавить директиву задержки сканирования для роботов Яндекса:
User-agent: Yandex # directives after this line will only apply to Yandex bots.
Crawl-delay: 2 # specifies a delay of 2 seconds
Дополнительная информация: https://help.yandex.com/webmaster/controlling-robot/robots-txt.xml#crawl-delay
Других решений пока нет …