robots.txt и meta robots: подробный разбор
robots.txt и meta robots — два инструмента, которые путают чаще всего. Первый управляет обходом, второй — индексированием и показом. Главное правило, на котором держится весь урок: robots.txt нужен в основном чтобы не перегружать сайт запросами, а не чтобы скрыть страницу от Google. Для этого есть noindex или пароль. Дальше — как Google разбирает файл, какие директивы поддерживает, как конфликтуют правила и что происходит при ошибках сервера.
Основа — спецификация Google о разборе robots.txt и описание метатега robots и X-Robots-Tag. Базовое введение — в уроке про robots.txt; здесь — подробности.
Где лежит файл и на что распространяется
- Файл должен быть текстом в UTF-8, лежать в корне хоста;
- он действует только для своего хоста, протокола и порта: файл на example.com не распространяется на поддомен, на http и на другой порт, а файл в подпапке не проверяется вовсе;
- предел размера — 500 КиБ, всё, что дальше, игнорируется;
- имена полей не зависят от регистра, но пути в правилах зависят от него;
- Google кэширует файл обычно до 24 часов.
Какие директивы поддерживаются
| Поле | Значение |
|---|---|
user-agent | к какому роботу относятся правила |
disallow | путь, который нельзя сканировать |
allow | путь, который можно сканировать |
sitemap | полный URL карты сайта |
Это весь список. Нередко называют ещё директиву Crawl-delay, но Google другие поля, например crawl-delay, не поддерживает. Недействительные строки Google игнорирует. Подробнее о картах сайта — в уроке про XML-карты.
Как выбирается группа и правило
- Группа. Google выбирает группу с наиболее подходящим user-agent; порядок групп неважен. Если для робота объявлено несколько специальных групп, их правила объединяются, а группа со звёздочкой с ними не объединяется;
- Правило. Применяется самое специфичное правило по длине пути; при конфликте, в том числе с подстановками, берётся наименее строгое. Поэтому утверждение «Allow всегда перебивает Disallow» неточно: важна длина пути;
- Подстановки. Поддерживаются две: звёздочка (любое число любых символов) и знак доллара (конец URL). Завершающая звёздочка игнорируется.
User-agent: * Disallow: /cart/ Disallow: /*?sessionid= Allow: /cart/help User-agent: Googlebot-Image Disallow: /drafts/ Sitemap: https://example.com/sitemap.xml
Что будет при ошибках
- Ответы 4xx (кроме 429) Google воспринимает так, будто файла нет: ограничений нет;
- Ответы 5xx. Первые 12 часов Google прекращает обход сайта и пытается получить файл заново; затем до 30 дней использует последнюю удачную версию; если версии нет, считает, что ограничений нет. Поэтому «лежащий» robots.txt — не мелочь;
- не используйте 401 и 403 для ограничения частоты обхода — они на неё не влияют.
Состояние файла видно в отчёте robots.txt в Search Console: какие файлы Google нашёл для основных хостов, когда обходил и какие были предупреждения. Устаревший «Тест robots.txt» из меню инструментов заменён этим отчётом.
Что закрывать, а что нет
Закрывать имеет смысл то, что создаёт нагрузку без пользы для поиска: корзину, внутренний поиск, адреса с сеансовыми идентификаторами. Не закрывайте то, без чего Google не поймёт страницу: иначе он плохо проанализирует страницы, зависящие от этих ресурсов. Для JavaScript есть дополнительное правило: Google не выполняет скрипты из заблокированных файлов; подробности — в уроке про JavaScript и SEO.
Метатег robots
Метатег в head или заголовок X-Robots-Tag управляют индексированием и показом. Правила можно комбинировать через запятую; они не зависят от регистра. Для текущих целей важны:
| Правило | Эффект |
|---|---|
noindex | не показывать страницу в результатах |
nofollow | не переходить по ссылкам страницы; без него Google может использовать их для обнаружения |
none | то же, что noindex и nofollow |
nosnippet | не показывать текстовый фрагмент и видеопревью |
max-snippet: N | не больше N символов текстового фрагмента |
Два уточнения. Во-первых, Google больше не использует noarchive, потому что кэшированной ссылки в результатах больше нет. Во-вторых, при конфликте правил действует более строгое: если на странице есть и max-snippet:50, и nosnippet, применяется nosnippet.
X-Robots-Tag: для PDF и не только
Заголовок HTTP позволяет задать те же правила для файлов, у которых нет head: PDF, изображений, документов. Можно указать робота перед правилами: X-Robots-Tag: googlebot: nofollow. Правила без указания робота действуют на всех.
HTTP/1.1 200 OK X-Robots-Tag: noindex
Главная ловушка: Disallow + noindex
Это самая известная ловушка. Правило из руководства по блокированию индексации: чтобы noindex сработал, страница не должна быть закрыта в robots.txt и должна быть доступна обходчику. Если закрыть, робот правила не увидит, и страница всё равно может появиться в результатах, например если на неё ссылаются. Для убранной из выдачи страницы порядок такой: сначала открыть обход, дать noindex, дождаться исключения, только потом при необходимости закрывать.
Robots.txt, noindex и canonical
Это три разных инструмента для трёх разных задач: нагрузка на сайт, видимость в результатах и выбор основного URL. Для дублей документация прямо предостерегает: не используйте robots.txt для канонизации, а noindex не рекомендуется использовать, чтобы предотвратить выбор канонической страницы на одном сайте. Подробнее — в уроках про дублированный контент и тег canonical.
Как проверить
- Откройте отчёт robots.txt в Search Console и убедитесь, что файл найден без ошибок для каждого хоста.
- Проверьте, что нет случайного
Disallow: /. - Через анализатор страницы проверьте, что страницы, которые должны быть в поиске, не помечены noindex.
- Обойдите сайт краулером и найдите страницы с noindex, закрытые одновременно в robots.txt.
- Для массовой проверки статусов индексирования — аудит URL. Общие вопросы обходимости — в уроке про обходимость.
Чек-лист
- robots.txt лежит в корне каждого хоста, в UTF-8, не больше 500 КиБ.
- Используются только поддерживаемые поля: user-agent, allow, disallow, sitemap.
- Нет случайного
Disallow: /. - Закрыто то, что даёт нагрузку, но не нужно поиску; ресурсы для отображения открыты.
- Страницы с noindex не закрыты в robots.txt.
- Для PDF и других файлов используется X-Robots-Tag.
Ошибки
- Закрывать в robots.txt то, что нужно убрать из поиска.
- Одновременно Disallow и noindex на одной странице.
- Использовать Crawl-delay, ожидая эффекта в Google.
- Закрывать CSS и JavaScript, нужные для отображения.
- Использовать robots.txt для канонизации.
Что дальше
Дальше — тег canonical, как задать предпочтительный URL, не закрывая дубли от обхода.