Я запускаю довольно масштабный веб-сканер. Мы очень стараемся использовать сканер в рамках общепринятых стандартов сообщества, в том числе уважая robots.txt. Мы получаем очень мало жалоб на сканер, но когда мы делаем это, большинство касается нашей работы с robots.txt. Чаще всего веб-мастер допустил ошибку в своем файле robots.txt, и мы любезно указываем на ошибку. Но периодически мы сталкиваемся с серыми областями, которые включают обработку Allow
и Disallow
.
Страница robots.txt не распространяется Allow
. Я видел другие страницы, некоторые из которых говорят, что сканеры используют правило «первого соответствия», а другие не указывают. Это приводит к некоторой путанице. Например, страница Google о robots.txt использовала этот пример:
User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html
Очевидно, что правило «первого соответствия» здесь не сработает, потому что сканер увидит Disallow
и уйдет, никогда не сканируя файл, который был специально разрешен.
Мы находимся в открытом доступе, если игнорируем все Allow
строки, но тогда мы не можем сканировать то, что нам разрешено сканировать. Мы будем скучать по вещам.
Мы добились больших успехов, Allow
сначала проверив , а затем проверив Disallow
, идея, которая Allow
должна была быть более конкретной, чем Disallow
. Это связано с тем, что по умолчанию (т.е. при отсутствии инструкций об обратном) любой доступ разрешен. Но затем мы сталкиваемся с чем-то вроде этого:
User-agent: *
Disallow: /norobots/
Allow: /
Намерение здесь очевидно, но это Allow: /
заставит бота, который Allow
сначала проверяет, что он может сканировать что угодно на сайте.
Даже это можно обойти в этом случае. Мы можем сравнить соответствие Allow
с соответствием Disallow
и определить, что нам запрещено сканировать что-либо в / norobots /. Но это ломается перед лицом подстановочных знаков:
User-agent: *
Disallow: /norobots/
Allow: /*.html$
Тогда возникает вопрос, может ли бот ползти /norobots/index.html
?
«Первое соответствие» правило исключает всякую двусмысленность, но я часто вижу сайты , которые показывают что - то вроде старого , например Google, поставив более конкретные Allow
послеDisallow
. Этот синтаксис требует большей обработки со стороны бота и приводит к неоднозначности, которые не могут быть решены.
Тогда мой вопрос: как правильно поступить? Что веб-мастера ожидают от хорошего бота, когда дело доходит до обработки файла robots.txt?
источник
Ответы:
Одно очень важное замечание: Разрешить заявление должно прийти до того в Disallow заявление, независимо от того , как конкретные ваши заявления. Так что в вашем третьем примере - нет, боты не будут ползти
/norobots/index.html
.Как правило, в качестве личного правила я сначала ставлю операторы allow, а затем перечисляю запрещенные страницы и папки.
источник
Вот мое мнение о том, что я вижу в этих трех примерах.
Пример 1
я бы игнорировать весь
/folder1/
каталог , за исключением вmyfile.html
файле. Поскольку они явно разрешают это, я предполагаю, что было проще заблокировать весь каталог и явно разрешить этот один файл, а не перечислять каждый файл, который они хотели заблокировать. Если этот каталог содержит много файлов и подкаталогов, этот файл robots.txt может стать громоздким быстро.Пример 2
Я бы предположил, что
/norobots/
каталог недоступен, а все остальное доступно для сканирования. Я читаю это как "сканировать все, кроме каталога / norobots /".Пример 3
Как и в примере 2, я бы предположил, что каталог недоступен,
/norobots/
и все.html
файлы не в этом каталоге доступны для сканирования. Я читаю это как «сканировать все файлы .html, но не сканировать содержимое в каталоге / norobots /».Надеемся, что пользовательский агент вашего бота содержит URL-адрес, по которому они могут узнать больше информации о ваших привычках сканирования и сделать запросы на удаление или дать отзыв о том, как они хотят, чтобы их robots.txt интерпретировал.
источник