Что файл может и чего не может
robots.txt — просьба, а не забор. Он сообщает сотрудничающим роботам, какие
пути пропустить. Он не аутентифицирует, ничего не прячет и не удаляет страницы
из индекса.
| Задача | Подходящий инструмент |
| --- | --- |
| Не тратить краулинговый бюджет на фильтры | Disallow в robots.txt |
| Убрать страницу из выдачи | Мета-тег noindex, обход разрешён |
| Сделать страницу приватной | Авторизация |
| Указать роботам список адресов | Строка Sitemap: |
Синтаксис шаблонов целиком
Специальных символов всего два. * совпадает с любой последовательностью, $
привязывает конец адреса. Всё остальное — буквальный префикс: Disallow: /admin
закрывает /admin, /admin/ и /administrator, что обычно оказывается
неожиданностью. Если имелась в виду директория, пишите Disallow: /admin/.
Правило самого длинного совпадения
При Disallow: /blog и Allow: /blog/public путь /blog/public/post открыт
для обхода: подходят оба шаблона, побеждает более длинный. Поменяйте длины
местами — результат перевернётся. Именно из-за этого правила люди случайно
выкидывают раздел из индекса: добавляют широкий Disallow и полагают, что более
ранний Allow защищает нужное, или наоборот. Проверяйте важные пути до
публикации, а не после падения трафика.
Закрытие всего на тестовом сайте
User-agent: * с Disallow: / уместен на staging и катастрофичен, если уедет в
продакшен, — а это случается регулярно, потому что файл копируется вместе со
всем остальным. Если ваш деплой переносит robots.txt между окружениями, задайте
продакшен-версию явно, а не по наследству.
Вопросы
Убирает ли Disallow страницу из результатов поиска?+
Нет — и это самое дорогое заблуждение о robots.txt. Disallow запрещает обход, а не индексирование. Закрытый адрес, на который ссылаются другие сайты, всё равно может появиться в выдаче — без описания, потому что роботу не дали его прочитать. Чтобы страницы не было в индексе, разрешите обход и поставьте мета-тег noindex; закрытие в robots.txt как раз мешает роботу увидеть этот тег.
Какое правило побеждает, если подходят и Allow, и Disallow?+
Самое длинное, а при равной длине побеждает Allow. То есть Disallow: /blog вместе с Allow: /blog/public оставляет /blog/public/post открытым для обхода, потому что разрешающий шаблон длиннее. Тестер здесь применяет ровно это правило — проверить до публикации и есть его смысл.
Это средство защиты?+
Скорее наоборот. Это публичный файл, перечисляющий пути, куда вы предпочли бы никого не пускать, и соблюдают его только добропорядочные роботы. Написать /admin в robots.txt — значит сообщить всем, что админка существует. Закрытые пути защищают авторизацией, а в файл не выносят.
Он вообще нужен?+
Только если нужно что-то ограничить или указать на sitemap. Сайту, которому нечего закрывать, файл не нужен: отсутствующий robots.txt означает, что открыто всё, — то же самое, что пустой. Чего делать не стоит, так это публиковать сломанный файл: синтаксическая ошибка может быть прочитана как запрет гораздо большего, чем вы имели в виду.