Robots.txt: полное руководство по настройке для SEO
Как robots.txt влияет на сканирование, где он не управляет индексацией и как проверять директивы, не закрыв от поиска нужные страницы.
robots.txt — это текстовый файл в корне сайта. Он подсказывает поисковым роботам, какие разделы можно посещать, а какие лучше пропускать. Это первое, что читает краулер, когда заходит на сайт. Файл существует с 1994 года и до сих пор остаётся де-факто стандартом управления сканированием.
Главное ограничение: страница, закрытая через 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 помогает поисковикам сразу найти XML-сайтмап без дополнительной настройки.
Не защищает контент
robots.txt открыт для всех. Он не шифрует и не скрывает содержимое страниц — только просит ботов их не посещать.
Формат и синтаксис
Файл состоит из блоков, которые называются записями. Каждая запись начинается с одной или нескольких директив User-agent и может содержать любое количество строк Disallow, Allow, Crawl-delay и Sitemap. Записи отделяются пустой строкой. Комментарии начинаются с #.
| Директива | Поддержка | Описание |
|---|---|---|
| User-agent | Все | Идентификатор бота. * означает «все краулеры». В одном блоке может быть несколько строк User-agent. |
| Disallow | Все | Путь, сканирование которого запрещено. Пустое значение означает «ничего не закрыто» (разрешено всё). |
| Allow | Google, Яндекс | Явно разрешает путь внутри закрытого раздела. Имеет приоритет над Disallow. |
| Crawl-delay | Яндекс, Bing | Минимальная пауза в секундах между запросами бота. Google её игнорирует. |
| Sitemap | Google, Яндекс, Bing | Абсолютный URL XML-сайтмапа. Можно указать несколько строк Sitemap. |
Подстановочные знаки: * и $
Google и Яндекс поддерживают два символа-подстановки в путях Disallow и Allow. Звёздочка * совпадает с любой последовательностью символов, включая пустую. Знак доллара $ фиксирует конец URL: правило срабатывает только на точное совпадение до последнего символа.
# Block all URLs with the ?sort= parameter
Disallow: /*?sort=
# Block only /page (exact match, not /page/child)
Disallow: /page$
# Block all PDFs across the entire site
Disallow: /*.pdf$Директиву Sitemap можно поставить в любом месте файла: она не обязана стоять внутри блока конкретного User-agent. Всегда указывайте полный абсолютный URL:
Sitemap: https://example.com/sitemap.xmlГотовые примеры для разных сценариев
Сценарий 1: простой публичный сайт
Для небольшого сайта без закрытых разделов хватит минимального файла: всё разрешить, закрыть админку и технические пути и указать сайтмап.
# robots.txt for example.com — simple public site
User-agent: *
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Sitemap: https://example.com/sitemap.xmlСценарий 2: крупный интернет-магазин с каталогом и параметрическими страницами
Интернет-магазин порождает сотни тысяч URL через фильтры, сортировку и пагинацию. Большинство из них — дубли или страницы без самостоятельной ценности. Закройте параметрические URL через Disallow с подстановочными знаками, а чистые страницы категорий и товаров оставьте доступными.
# robots.txt for e-commerce example.com
User-agent: *
# Technical and admin sections
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart
Disallow: /account/
Disallow: /api/
# Parametric catalogue duplicates
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?page=
Disallow: /*?ref=
Disallow: /search
# Explicitly allow a useful parameter in one section
Allow: /catalog/shoes?size=
Crawl-delay: 1
Sitemap: https://example.com/sitemap.xmlСценарий 3: сайт с тестовыми и временными страницами
Лендинги вебинаров, черновики, шаблонные страницы и разделы для тестирования лучше закрыть от сканирования. Используйте Disallow по префиксу пути и, если нужно, отдельный блок для конкретных ботов.
# robots.txt for example.com — main site with staging sections
User-agent: *
Disallow: /webinar-drafts/
Disallow: /templates/
Disallow: /staging/
Disallow: /_preview/
Disallow: /thank-you-test
# Block the entire site for a specific bot (e.g. an aggressive crawler)
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
Sitemap: https://example.com/sitemap.xmlDisallow, meta robots noindex и 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, изображений, документов. | Управлять индексацией нестраничных ресурсов: PDF, DOCX, изображений. |
Пример X-Robots-Tag в заголовке HTTP-ответа (настраивается в Nginx или в коде приложения):
# Nginx: prevent indexation of all PDFs
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow";
}Как тестировать robots.txt
Проверяйте изменения до выкладки. Одна опечатка может закрыть весь сайт от краулеров.
- Google Search Console → robots.txt Tester: встроен прямо в GSC. Введите URL, чтобы проверить, разрешён он или заблокирован для Googlebot и других ботов Google.
- Яндекс Вебмастер → Анализ robots.txt: аналог для Яндекса. Показывает, как Яндекс-бот понимает ваш файл.
- Screaming Frog SEO Spider → Configuration → Robots.txt: сканирует сайт с учётом robots.txt и выводит в отчёте закрытые URL.
- curl: быстрая проверка из командной строки. Читает файл и показывает HTTP-статус.
# Fetch robots.txt and inspect its contents
curl -s https://example.com/robots.txt
# Check HTTP status (must be 200)
curl -I https://example.com/robots.txtЧастые ошибки и как их исправить
| Ошибка | Симптом | Исправление |
|---|---|---|
| Disallow: / для всего сайта | Googlebot перестаёт сканировать всё. В GSC страницы помечены как «заблокировано в robots.txt». | Удалите строку или замените её конкретным путём. Такое нередко попадает в файл при выкладке. |
| Лишний пробел в пути | Disallow: /admin / (с пробелом): бот читает путь буквально, и ничего не закрывается. | Уберите пробелы. Пути чувствительны к регистру и к пробелам. |
| noindex + Disallow на одной странице | Страница остаётся в индексе; директива noindex не выполняется. | Уберите Disallow и оставьте только noindex. Бот должен иметь возможность зайти на страницу, чтобы прочитать тег. |
| Нет User-agent перед правилами | Синтаксическая ошибка: правила не относятся ни к одному боту. | Добавьте User-agent: * перед блоком Disallow/Allow. |
| robots.txt отдаёт 404 или 500 | 404 трактуется как «ограничений нет»; 500 временно останавливает сканирование. | Убедитесь, что статус HTTP 200. Пустой файл означает «разрешено всё». |
Рекомендации по безопасности
robots.txt публичен и индексируется поисковиками: его может прочитать любой. Если указать в нём пути к админке, бэкапам, внутренним API или конфигам, вы фактически передадите атакующему карту сайта.
- Не публикуйте чувствительные пути: бэкапы (.zip, .sql), конфиги (.env, config.php), внутренние API.
- Защищайте закрытые разделы на уровне сервера: HTTP Basic Auth, IP-ограничения, OAuth, а не robots.txt.
- Держите список Disallow коротким: только пути, которые действительно нужно исключить из сканирования по SEO-причинам.
- Регулярно проверяйте robots.txt в GSC: убедитесь, что после выкладки не появился Disallow: /.
Чеклист и итоговый пример
- Файл открывается по адресу https://example.com/robots.txt и отдаёт HTTP 200
- Кодировка UTF-8, без BOM (метки порядка байтов)
- Каждый блок начинается с User-agent
- Пустая строка отделяет блоки для разных User-agent
- Нет комбинации Disallow и noindex на одной странице
- Чувствительные пути не открыты публично
- Для Яндекса задан Crawl-delay, если нагрузка на сервер высокая
- Директива Sitemap указывает на корневой индексный файл
- Файл проверен в GSC и Яндекс Вебмастере
- Screaming Frog показывает ожидаемое количество закрытых URL
Итоговый robots.txt для example.com с комментариями. Это универсальный шаблон для большинства сценариев:
# robots.txt for example.com
# Updated: 2026-05-15
# Rules for all crawlers
User-agent: *
# Admin and auth sections
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Disallow: /account/
# Technical paths
Disallow: /api/
Disallow: /_next/
Disallow: /cdn-cgi/
# Parametric duplicates (e-commerce)
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?ref=
Disallow: /search
# Staging and temporary pages
Disallow: /staging/
Disallow: /webinar-drafts/
Disallow: /templates/
# Explicit allow for a useful API path
Allow: /api/og-image/
# Crawl rate for Yandex
User-agent: Yandex
Crawl-delay: 1
# Aggressive SEO bots (optional)
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
# Sitemap
Sitemap: https://example.com/sitemap.xmlFAQ
Влияет ли robots.txt на позиции?
Что будет, если robots.txt отдаёт 404?
Можно ли задать разные правила для Googlebot и Яндекса в одном файле?
Disallow: / закрывает весь сайт. Как быстро это исправить?
Как закрыть один файл, но не его папку?
Check it with SpiderHead
Free and local: run the audit on your own machine.



