Техническое SEO

Robots.txt: полное руководство по настройке для SEO

Обложка статьи: Robots.txt — полное руководство по настройке

Разбор синтаксиса robots.txt, готовые шаблоны для публичного сайта, e-commerce и тестовых страниц, сравнение с meta robots и X-Robots-Tag, инструменты тестирования и чеклист.

Robots.txt — текстовый файл в корне сайта, который сообщает поисковым роботам, какие разделы можно обходить, а какие нет. Это первое, что читает краулер при посещении сайта. Файл существует с 1994 года и до сих пор остаётся стандартом де-факто для управления краулингом.

Robots.txt — это рекомендация, а не запрет. Добросовестные боты (Googlebot, Yandex) соблюдают директивы. Вредоносные краулеры и скрейперы игнорируют файл. Для защиты конфиденциальных данных используйте авторизацию и серверные настройки, а не robots.txt.

Главное ограничение robots.txt: заблокированная через Disallow страница не исчезает из индекса автоматически. Если на неё ссылаются другие сайты, Google может проиндексировать URL без посещения — и отобразить пустой сниппет в выдаче. Для полного удаления из индекса нужны другие инструменты.

Дерево решений Googlebot: robots.txt управляет краулингом, а meta noindex — индексацией. Их комбинация даёт четыре разных исхода.

Что такое robots.txt и его ограничения

Файл robots.txt размещается строго по адресу https://example.com/robots.txt — в корне домена. Поддомены имеют собственные файлы: robots.txt для blog.example.com находится по адресу https://blog.example.com/robots.txt. Протокол Robots Exclusion Standard (REP) описывает базовые директивы, Google и Яндекс расширили его дополнительными возможностями.

Управление краулингом

Запрещает роботу обходить определённые разделы — снижает бесполезную нагрузку на сервер и экономит краулинговый бюджет.

Указывает на Sitemap

Директива Sitemap помогает поисковику сразу найти XML-сайтмап без дополнительных настроек.

Не защищает контент

Robots.txt виден всем. Он не шифрует и не скрывает содержимое страниц — только рекомендует ботам их не посещать.

Формат и синтаксис

Файл состоит из блоков — записей (records). Каждая запись начинается с одной или нескольких директив User-agent и может содержать произвольное количество Disallow, Allow, Crawl-delay и Sitemap. Между записями — пустая строка. Комментарии начинаются с символа #.

ДирективаПоддержкаОписание
User-agentВсеИдентификатор бота. * означает «все роботы». Один блок может содержать несколько строк User-agent.
DisallowВсеПуть, который запрещён для обхода. Пустое значение означает «ничего не запрещено» (разрешить всё).
AllowGoogle, ЯндексЯвное разрешение пути внутри запрещённого раздела. Приоритет над Disallow.
Crawl-delayЯндекс, BingМинимальная задержка в секундах между запросами бота. Google игнорирует.
SitemapGoogle, Яндекс, BingАбсолютный URL XML-сайтмапа. Можно указать несколько строк.

Wildcards: * и $

Google и Яндекс поддерживают два символа подстановки в путях Disallow и Allow. Звёздочка * соответствует любой последовательности символов (включая пустую строку). Знак доллара $ фиксирует конец URL — точное совпадение до последнего символа.

TEXT
# Запретить все URL с параметром ?sort=
Disallow: /*?sort=

# Запретить только /page (точное совпадение, не /page/child)
Disallow: /page$

# Запретить все PDF во всех разделах
Disallow: /*.pdf$
При конфликте между Disallow и Allow побеждает более специфичное правило (длиннее по символам). Если длины равны — побеждает Allow. Это поведение специфично для Google; другие боты могут реализовывать иначе.

Директива Sitemap размещается в любом месте файла, привязка к конкретному блоку User-agent не требуется. Указывайте полный абсолютный URL с протоколом:

TEXT
Sitemap: https://example.com/sitemap.xml
Если используете Sitemap Index, достаточно одной строки — указывайте на индексный файл, а не на каждый дочерний сайтмап. Поисковик найдёт все дочерние файлы самостоятельно.

Готовые примеры для разных сценариев

Сценарий 1: простой публичный сайт

Для небольшого сайта без закрытых разделов достаточно минимального файла: разрешить всё, закрыть административную панель и технические пути, указать сайтмап.

TEXT
# robots.txt для example.com — простой публичный сайт
User-agent: *
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/

Sitemap: https://example.com/sitemap.xml

Сценарий 2: крупный e-commerce с каталогом и параметрными страницами

Интернет-магазин генерирует сотни тысяч URL через фильтры, сортировку и пагинацию. Большинство из них — дубли или страницы без самостоятельной ценности. Закрываем параметрные URL через Disallow с wildcards, оставляем чистые страницы категорий и товаров.

TEXT
# robots.txt для e-commerce example.com
User-agent: *

# Технические и административные разделы
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart
Disallow: /account/
Disallow: /api/

# Параметрные дубли каталога
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?page=
Disallow: /*?ref=
Disallow: /search

# Явно разрешаем конкретный параметр в нужном разделе
Allow: /catalog/shoes?size=

Crawl-delay: 1

Sitemap: https://example.com/sitemap.xml
Для параметрных страниц с уникальным контентом (например, товар с определённым размером или цветом) лучше использовать canonical-тег, а не Disallow — это сохраняет краулинговый бюджет, но не отрезает страницу полностью.

Сценарий 3: сайт с тестовыми и временными страницами

Лендинги вебинаров, черновики, шаблонные страницы, staging-разделы — их нужно закрыть от краулинга. Используем Disallow по префиксу пути и, при необходимости, отдельный блок для специфичных ботов.

TEXT
# robots.txt для example.com — основной сайт с тестовыми разделами
User-agent: *
Disallow: /webinar-drafts/
Disallow: /templates/
Disallow: /staging/
Disallow: /_preview/
Disallow: /thank-you-test

# Закрыть весь сайт для конкретного бота (например, агрессивного краулера)
User-agent: AhrefsBot
Disallow: /

User-agent: SemrushBot
Disallow: /

Sitemap: https://example.com/sitemap.xml
Закрытие раздела через robots.txt не означает, что его содержимое конфиденциально. URL тестовых страниц могут попасть в индекс, если на них ссылаются снаружи. Для истинной изоляции staging-среды используйте HTTP-авторизацию или ограничение по IP на уровне сервера.

Disallow vs meta robots noindex vs X-Robots-Tag

Это три разных инструмента с разными задачами. Смешение приводит к типичным ошибкам: страница заблокирована в robots.txt и одновременно получает noindex — Google не может прочитать мета-тег, потому что страница закрыта для обхода, и директива noindex не применяется.

ИнструментГде живётЧто делаетКогда применять
Disallow в robots.txtrobots.txtЗапрещает боту посещать URL. Не удаляет из индекса, если URL уже там.Закрыть служебные разделы, снизить нагрузку краулингового бюджета.
meta robots noindexHTML <head>Разрешает боту посетить, но запрещает добавлять в индекс. Бот читает тег и выполняет директиву.Убрать конкретную страницу из индекса (спасибо-, пагинация, фильтр).
X-Robots-TagHTTP-заголовокАналог meta robots, но работает для любых файлов: PDF, изображений, документов.Управлять индексацией не-HTML ресурсов (PDF, DOCX, изображения).
Никогда не комбинируйте Disallow и noindex для одной страницы. Если страница закрыта в robots.txt, Google не может прочитать её noindex — и может сохранить URL в индексе без содержимого. Используйте noindex только для страниц, доступных для обхода.

Пример X-Robots-Tag в заголовке HTTP-ответа (настраивается в Nginx или в коде приложения):

TEXT
# Nginx: запретить индексацию всех PDF
location ~* \.pdf$ {
    add_header X-Robots-Tag "noindex, nofollow";
}

Как тестировать robots.txt

Перед деплоем изменений в robots.txt обязательно проверьте, что новые правила работают так, как задумано. Ошибка в одной строке может заблокировать весь сайт для краулеров.

  • Google Search Console → Инструмент проверки robots.txt: встроенный тестер прямо в GSC. Позволяет ввести URL и проверить, разрешён или заблокирован доступ для Googlebot и других ботов Google.
  • Яндекс Вебмастер → Анализ robots.txt: аналогичный инструмент для Яндекса. Показывает, как Яндекс.Бот интерпретирует ваш файл.
  • robots.txt тестер на сайте https://www.google.com/webmasters/tools/robots-testing-tool: онлайн-инструмент для проверки без авторизации.
  • Screaming Frog SEO Spider → Configuration → Robots.txt: сканирует сайт с учётом robots.txt, показывает заблокированные URL прямо в отчёте.
  • curl: быстрая проверка файла напрямую из командной строки.
Пример robots.txt с учётом рекомендаций выше:
BASH
# Получить robots.txt и проверить содержимое
curl -s https://example.com/robots.txt

# Проверить HTTP-статус (должен быть 200)
curl -I https://example.com/robots.txt

Частые ошибки и как их исправить

ОшибкаСимптомИсправление
Disallow: / для всего сайтаGooglebot не обходит ни одну страницу. GSC показывает «заблокировано».Удалить или заменить на конкретный путь. Временная ошибка при деплое.
Случайный пробел в путиDisallow: /admin / (с пробелом) — бот читает путь литерально.Убрать пробелы. Пути чувствительны к регистру и спецсимволам.
noindex + Disallow на одной страницеСтраница остаётся в индексе, noindex не работает.Убрать Disallow, оставить только noindex. Бот должен иметь доступ к странице.
Отсутствует User-agent перед правиламиСинтаксическая ошибка: правила не применяются ни к одному боту.Добавить User-agent: * перед блоком Disallow/Allow.
robots.txt возвращает 404 или 500Google рассматривает 404 как «ограничений нет», 500 — как временный запрет.Обеспечить HTTP 200 для файла. Пустой файл = разрешить всё.

Рекомендации по безопасности

Robots.txt публичен и индексируется поисковиками — его содержимое может прочитать любой человек. Публикация путей к административным разделам, резервным копиям, внутренним API или конфигурационным файлам через robots.txt фактически раскрывает структуру сайта злоумышленникам.

Не используйте robots.txt как единственную защиту конфиденциальных разделов. Путь вида Disallow: /internal-api/v2/keys/ сообщает атакующему именно то место, куда стоит обратиться.
  • Не раскрывайте пути к чувствительным ресурсам — к резервным копиям (.zip, .sql), конфигурационным файлам (.env, config.php), внутренним API.
  • Закрывайте конфиденциальные разделы на уровне сервера — HTTP Basic Auth, IP allowlist, OAuth — а не через robots.txt.
  • Минимизируйте список Disallow — указывайте только те пути, которые реально нужно скрыть от краулеров по SEO-причинам.
  • Регулярно проверяйте robots.txt в GSC — убедитесь, что после деплоев случайно не появился Disallow: /.

Чеклист и финальный пример

  • Файл доступен по https://example.com/robots.txt и возвращает HTTP 200
  • Кодировка UTF-8, нет BOM (Byte Order Mark)
  • Каждый блок начинается с User-agent
  • Пустая строка разделяет блоки разных User-agent
  • Нет комбинации Disallow + noindex для одной страницы
  • Чувствительные пути не раскрываются публично
  • Crawl-delay указан для Яндекса при высокой нагрузке
  • Директива Sitemap ведёт на корневой индексный файл
  • Файл проверен в GSC и Яндекс Вебмастере
  • Screaming Frog показывает ожидаемое число заблокированных URL

Финальный пример файла robots.txt для example.com с комментариями — универсальный шаблон, покрывающий большинство сценариев:

TEXT
# robots.txt для example.com
# Обновлено: 2026-05-15

# Правила для всех краулеров
User-agent: *

# Административные разделы
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Disallow: /account/

# Технические пути
Disallow: /api/
Disallow: /_next/
Disallow: /cdn-cgi/

# Параметрные дубли (e-commerce)
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?ref=
Disallow: /search

# Тестовые и временные страницы
Disallow: /staging/
Disallow: /webinar-drafts/
Disallow: /templates/

# Явное разрешение важных разделов
Allow: /api/og-image/

# Скорость краулинга для Яндекса
User-agent: Yandex
Crawl-delay: 1

# Агрессивные SEO-боты (опционально)
User-agent: AhrefsBot
Disallow: /

User-agent: SemrushBot
Disallow: /

# Сайтмап
Sitemap: https://example.com/sitemap.xml

FAQ

Косвенно. Сам файл не является сигналом ранжирования, но блокировка через Disallow сокращает краулинг заблокированных страниц. Если заблокировать важные страницы — они потеряют позиции. Если закрыть дублированные параметрные URL — освободится краулинговый бюджет для полезных страниц.
Google интерпретирует отсутствующий robots.txt (404) как «ограничений нет» и обходит весь сайт. Ошибка 500 или таймаут трактуется как временный запрет — Google приостанавливает краулинг до восстановления файла.
Да. Достаточно создать два отдельных блока User-agent. Googlebot читает только свой блок, Yandex — свой. Блок User-agent: * применяется ко всем ботам, для которых нет персонального блока.
Замените или удалите строку Disallow: / в блоке User-agent: *. После деплоя проверьте в GSC в разделе «Инструмент проверки URL». Повторный краулинг восстановится в течение нескольких дней после исправления.
Используйте точный путь без trailing-слэша: Disallow: /private-doc.pdf. Для закрытия конкретного расширения по всему сайту — wildcard: Disallow: /*.pdf$