Я запускаю довольно масштабный веб-сканер. Мы очень стараемся использовать сканер в рамках общепринятых стандартов сообщества, в том числе уважая 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?