Barry Schwartz дает ссылки на обсуждения приоритета выбора записей в robots. txt роботами поисковых систем. Меня всегда удивляло, как можно делать такие разные и вычурные ошибки в таком простом файле исключений с четким и однозначным форматом. Можно, конечно, грешить на большое количество расширений, которые добавляет в стандарт каждая значимая система с широко известными в узких кругах именами роботов: Google, Yahoo, MSN, Yandex. Но в таком случае и вопросы по robots. txt возникали бы прежде всего именно по расширениям.
Вернемся к приоритетам. Как известно, записи в robots. txt разделяются пустыми строками, каждая запись — это инструкция для одного или нескольких роботов. Пусть мы имеем следующее содержание файла исключений: User-agent: * Disallow: /dir/file User-agent: Yandex Disallow: /reports User-agent: Googlebot Disallow: /users Allow: /best-page. html Вопрос заключался в том, какими директивами в данном случае будет руководствоваться робот Гугля, что для него будет запрещено? Можно подумать, что робот наткнется в первую очередь на секцию для всех роботов и именно ее правила примет к рассмотрению. Это неверное предположение. Робот при парсинге файла работает примерно по следующему алгоритму:
- Получает полностью файл Выделяет в файле корректные секции Ищет “свою” секцию Если своя секция найдена принимает к руководству ее инструкции. Если своей секции не обнаружено, ищет секцию для всех роботов Если обнаружена секция для всех роботов, принимает к руководству ее инструкции Если общая секция не найдена, робот считает, что индексировать можно все без исключения.
Отсюда делаем сразу несколько выводов:
- Порядок секций в файле значения не имеет. Если будет найдена “своя секция”, то робот будет руководствоваться только ее инструкциями, игнорируя все остальные, поэтому в нашем примере робот Гугл абсолютно справедливо будет индексировать /dir/file. Отсутствие общей секции — разрешение индексировать весь сайт роботам, не упомянутым ни в одной секции.