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

Разбор синтаксиса robots.txt, готовые шаблоны для публичного сайта, e-commerce и тестовых страниц, сравнение с meta robots и X-Robots-Tag, инструменты тестирования и чеклист.
Robots.txt — текстовый файл в корне сайта, который сообщает поисковым роботам, какие разделы можно обходить, а какие нет. Это первое, что читает краулер при посещении сайта. Файл существует с 1994 года и до сих пор остаётся стандартом де-факто для управления краулингом.
Главное ограничение robots.txt: заблокированная через Disallow страница не исчезает из индекса автоматически. Если на неё ссылаются другие сайты, Google может проиндексировать URL без посещения — и отобразить пустой сниппет в выдаче. Для полного удаления из индекса нужны другие инструменты.
Что такое 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 | Все | Путь, который запрещён для обхода. Пустое значение означает «ничего не запрещено» (разрешить всё). |
| Allow | Google, Яндекс | Явное разрешение пути внутри запрещённого раздела. Приоритет над Disallow. |
| Crawl-delay | Яндекс, Bing | Минимальная задержка в секундах между запросами бота. Google игнорирует. |
| Sitemap | Google, Яндекс, Bing | Абсолютный URL XML-сайтмапа. Можно указать несколько строк. |
Wildcards: * и $
Google и Яндекс поддерживают два символа подстановки в путях Disallow и Allow. Звёздочка * соответствует любой последовательности символов (включая пустую строку). Знак доллара $ фиксирует конец URL — точное совпадение до последнего символа.
# Запретить все URL с параметром ?sort=
Disallow: /*?sort=
# Запретить только /page (точное совпадение, не /page/child)
Disallow: /page$
# Запретить все PDF во всех разделах
Disallow: /*.pdf$Директива Sitemap размещается в любом месте файла, привязка к конкретному блоку User-agent не требуется. Указывайте полный абсолютный URL с протоколом:
Sitemap: https://example.com/sitemap.xmlГотовые примеры для разных сценариев
Сценарий 1: простой публичный сайт
Для небольшого сайта без закрытых разделов достаточно минимального файла: разрешить всё, закрыть административную панель и технические пути, указать сайтмап.
# 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, оставляем чистые страницы категорий и товаров.
# 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Сценарий 3: сайт с тестовыми и временными страницами
Лендинги вебинаров, черновики, шаблонные страницы, staging-разделы — их нужно закрыть от краулинга. Используем Disallow по префиксу пути и, при необходимости, отдельный блок для специфичных ботов.
# 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.xmlDisallow vs meta robots noindex vs X-Robots-Tag
Это три разных инструмента с разными задачами. Смешение приводит к типичным ошибкам: страница заблокирована в robots.txt и одновременно получает noindex — Google не может прочитать мета-тег, потому что страница закрыта для обхода, и директива noindex не применяется.
| Инструмент | Где живёт | Что делает | Когда применять |
|---|---|---|---|
| Disallow в robots.txt | robots.txt | Запрещает боту посещать URL. Не удаляет из индекса, если URL уже там. | Закрыть служебные разделы, снизить нагрузку краулингового бюджета. |
| meta robots noindex | HTML <head> | Разрешает боту посетить, но запрещает добавлять в индекс. Бот читает тег и выполняет директиву. | Убрать конкретную страницу из индекса (спасибо-, пагинация, фильтр). |
| X-Robots-Tag | HTTP-заголовок | Аналог meta robots, но работает для любых файлов: PDF, изображений, документов. | Управлять индексацией не-HTML ресурсов (PDF, DOCX, изображения). |
Пример X-Robots-Tag в заголовке HTTP-ответа (настраивается в Nginx или в коде приложения):
# 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 и проверить содержимое
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 или 500 | Google рассматривает 404 как «ограничений нет», 500 — как временный запрет. | Обеспечить HTTP 200 для файла. Пустой файл = разрешить всё. |
Рекомендации по безопасности
Robots.txt публичен и индексируется поисковиками — его содержимое может прочитать любой человек. Публикация путей к административным разделам, резервным копиям, внутренним API или конфигурационным файлам через robots.txt фактически раскрывает структуру сайта злоумышленникам.
- Не раскрывайте пути к чувствительным ресурсам — к резервным копиям (.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 с комментариями — универсальный шаблон, покрывающий большинство сценариев:
# 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