1) Что такое robots.txt и когда он нужен
Определение и роль
Robots.txt — это текстовый файл в корне сайта (https://example.com/robots.txt), который сообщает веб‑роботам, какие разделы разрешено или запрещено сканировать. Это «протокол вежливости», а не барьер безопасности.
Цитата:
Robots.txt не предназначен для удаления URL из поиска. Он ограничивает обход, а не индексацию.
— Google Search Central
Что robots.txt может, а что — нет
- Может:
-
- Направлять бота: какие пути закрыть от обхода (Disallow) и какие разрешить (Allow).
- Указать карту сайта (Sitemap).
- Подсказать частоту обхода некоторым ботам (Crawl-delay).
- Не может:
-
- Гарантированно удалить уже известные URL из индекса (для этого используются noindex/HTTP‑коды/удаление в веб‑мастере).
- Скрыть конфиденциальные разделы (используйте авторизацию/белые списки IP).

Когда robots.txt обязателен, а когда — факультативен
- Обязателен: сайты со служебными разделами (поиск/корзина/кабинет), каталоги с параметрами, SPA с API‑эндпоинтами, мультиязычные/мультидоменные проекты, крупные сайты (краулинговый бюджет).
- Факультативен: крошечные лендинги без служебных разделов (но лучше иметь даже минимальный файл).
— — —
2) Синтаксис и приоритеты: как поисковики читают правила
Базовые элементы REP (Robots Exclusion Protocol)
Файл состоит из «групп» правил. Каждая группа начинается строками User-agent, после чего идут Allow/Disallow для этого агента.
Пример минимального файла:
text
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
Пустой Disallow означает «разрешено всё».
Приоритет правил: что победит, Allow или Disallow
- Матч по User-agent: бот выбирает самую конкретную группу (например, Googlebot предпочтет блок для Googlebot, а не общий для *).
- Матч по путям: используется «наиболее специфичное правило» (самая длинная совпавшая строка). Если два правила одинаковой длины — преимущество у Allow (для Google). В других поисковиках поведение может отличаться — тестируйте.
- Порядок строк в группе вторичен; важнее длина совпавшего паттерна.
Вайлдкарды и якоря
Поддерживаются простые маски, это не регулярные выражения.
- «*» — соответствует любым символам (в т.ч. слэшу).
- «$» — конец URL.
Примеры:
text
Disallow: /*?sort=
Disallow: /*.pdf$
Allow: /assets/*.css$
Ограничения и нюансы
- Размер: Google обрабатывает первые ~500 КБ файла. Критичные правила ставьте выше.
- Регистр: путь чувствителен к регистру (/Catalog ≠ /catalog).
- Хост/схема: robots.txt действует для конкретного хоста и схемы. Для http и https, а также поддоменов — отдельные файлы.
- Комментарии начинаются с «#».
- Кодировка: используйте UTF‑8.
Таблица: основные директивы и поддержка
| Директива | Для чего | Поддержка Google | Поддержка Яндекс | Примечания |
| User-agent | Указать группу правил для бота | Да | Да | Можно несколько агентов в группе |
| Disallow | Запрет обхода пути | Да | Да | Пустая строка = всё разрешено |
| Allow | Разрешить частично внутри Disallow | Да | Да | Нужен для статики (CSS/JS) |
| Sitemap | Указать карту сайта | Да | Да | Можно несколько ссылок |
| Crawl-delay | Задержка между запросами | Нет | Да | Также поддерживает Bing; на Google не действует |
| Host | Предпочтительный хост | Нет | Да | Лучше решать 301+canonical |
| Clean-param | Игнорировать параметры | Нет | Да | Продвинутая настройка дублей |
— — —
3) Robots.txt vs meta robots vs X‑Robots‑Tag
Сравнение инструментов контроля индексации
| Инструмент | Где задаётся | Что делает | Когда использовать |
| robots.txt | /robots.txt | Управляет обходом (crawl) | Закрыть служебные разделы, шумные параметры, внутренний поиск |
| Meta robots | В <head> HTML | index/noindex, follow/nofollow, сниппеты | Убрать страницу из индекса при доступном обходе |
| X‑Robots‑Tag | HTTP‑заголовок | noindex для не‑HTML (PDF, изображения) | Деиндексация файлов, управление превью |
Ключевой принцип:
- Чтобы страница гарантированно исчезла из индекса, робот должен увидеть noindex. Если вы закрыли страницу Disallow, робот не сможет прочитать её meta robots — и URL останется в индексе как «URL только по ссылкам».
- Для Google «noindex в robots.txt» не работает. В Яндексе существуют дополнительные директивы, но best practice — использовать meta/x‑robots.
Цитата:
Если вам нужно удалить URL из поиска, не блокируйте его в robots.txt. Разрешите обход и используйте noindex или 404/410.
— Google Search Central
Типовые сценарии
- Параметрические страницы без ценности: не блокируйте сами страницы — ставьте rel=canonical на чистый URL и по ситуации meta robots: noindex. В robots.txt закрывайте только внутренний поиск и бесконечные параметры.
- Разделы /admin, /cart, /checkout: блокируйте Disallow.
- PDF/изображения, которые не должны индексироваться: X‑Robots‑Tag: noindex в заголовках ответа.
- Стейджинг/препрод: не полагайтесь на Disallow: /. Используйте basic auth/whitelist IP + noindex, чтобы случайно индекс не «просочился».
— — —
4) Как создать и разместить robots.txt
Где должен лежать файл и как его отдавать
- Путь: строго /robots.txt в корне хоста (https://example.com/robots.txt).
- HTTP: отдавайте 200 OK, без редиректов. 404/410 трактуется как «ограничений нет». 5xx/403 может привести к временному «закрытию всего» до восстановления.
- Кеш: поисковики кешируют robots.txt (обычно до 24 часов). Правки вступают в силу не моментально.
Проверка:
text
curl -I https://example.com/robots.txt
HTTP/2 200
content-type: text/plain; charset=utf-8
content-length: 512
Минимальный шаблон (разрешено всё + карта сайта)
text
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
Типовые шаблоны по задачам
- eCommerce (закрываем служебное, оставляем статику)
text
User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /checkout/
Disallow: /compare/
Disallow: /wishlist/
Disallow: /search/
Disallow: /*?sessionid=
Disallow: /*&page=
Allow: /assets/*.css$
Allow: /assets/*.js$
Allow: /uploads/
Sitemap: https://example.com/sitemaps/sitemap-index.xml
- Блог/медиа
text
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Allow: /wp-content/uploads/
Sitemap: https://example.com/sitemap_index.xml
- SPA/фронтенд на JS
text
User-agent: *
Disallow: /api/
Disallow: /internal/
Allow: /assets/*.css$
Allow: /assets/*.js$
Sitemap: https://example.com/sitemap.xml
Важно: ссылки в приложении должны быть настоящими <a href=»…»>, а не onclick.
- Мультиязык/поддомены
Для каждого поддомена/хоста — свой файл:
- https://en.example.com/robots.txt
- https://de.example.com/robots.txt
Серверные нюансы (Nginx/Apache)
Nginx: разные файлы для стейджинга и прода
nginx
# Production
server {
server_name example.com www.example.com;
location = /robots.txt {
root /var/www/prod/public;
add_header Content-Type text/plain;
}
}
# Staging: блок + basic auth
server {
server_name staging.example.com;
auth_basic «Restricted»;
auth_basic_user_file /etc/nginx/.htpasswd;
location = /robots.txt {
return 200 «User-agent: *\nDisallow: /\n»;
}
}
— — —
5) Паттерны правил: от параметров до медиа и конкретных ботов
Закрытие служебных и тонкая настройка
- Внутренний поиск: Disallow: /search/ и Disallow: /?s=
- Сессии и сортировки: Disallow: /*?session= и Disallow: /?*sort=
- Пагинация? Обычно НЕ закрывайте, если хотите, чтобы глубина каталога индексировалась. Управляйте индексацией через self‑canonical на каждую страницу пагинации.
Примеры:
text
# Параметры сортировки и трекинга
Disallow: /*?*sort=
Disallow: /*?*utm_
Disallow: /*?*ref=
# Дубли с хвостами
Disallow: /*&view=*
Disallow: /*?page=0
Медиа, статика, документы
- Не блокируйте CSS/JS, необходимые для отрисовки. Это важно для корректной оценки страниц в мобильном индексе.
- Чтобы скрыть PDF/изображения из поиска — используйте X‑Robots‑Tag: noindex в ответе сервера.
Nginx для PDF:
nginx
location ~* \.pdf$ {
add_header X-Robots-Tag «noindex, noarchive»;
}
Работа с конкретными ботами
- Googlebot, Googlebot-Image, Googlebot-News — настраивайте точечно, если нужно.
- Bingbot, Yandex — поддерживают Crawl-delay.
Пример:
text
User-agent: Googlebot-Image
Disallow: /private-images/
User-agent: Bingbot
Crawl-delay: 2
User-agent: Yandex
Crawl-delay: 1
Clean-param: sort&page /catalog/
Примечания:
- Crawl-delay Google не поддерживает (регулируйте в Search Console/внутренним rate‑limit).
- Clean-param — директива Яндекса для борьбы с дублями по параметрам. Используйте осторожно, приоритетнее — canonical и корректная архитектура URL.
Блокировать ли изображения/видео в /uploads?
Лучше — нет. Блокировка мешает полноценному рендерингу и может ухудшить понимание страниц. Если есть приват, вынесите его в закрытый раздел с авторизацией.
Таблица: «Что хотим» → «Как делаем»
| Цель | Что использовать | Пример |
| Спрятать служебные разделы | Disallow | Disallow: /admin/ |
| Убрать параметрические дубли | Canonical + (опц.) Clean-param | rel=canonical на чистый URL |
| Убрать URL из индекса | Meta robots/X‑Robots‑Tag | <meta name=»robots» content=»noindex»> |
| Убрать PDF из поиска | X‑Robots‑Tag | add_header X-Robots-Tag «noindex»; |
| Снизить нагрузку бота | Crawl-delay (не Google) | Crawl-delay: 1 (Яндекс) |
| Указать карты | Sitemap | Sitemap: https://example.com/sitemap.xml |
— — —
6) Публикация, тестирование и мониторинг
Публикация и «объявление» роботу
- Разместите файл по адресу /robots.txt, без редиректов.
- Добавьте ссылки на Sitemap: (можно несколько).
- Дублируйте ссылку на карту сайта в robots.txt и добавьте карту в веб‑мастерах.

Как тестировать
- Проверяйте статус файла:
-
- curl -I https://example.com/robots.txt (200 OK?)
- Веб‑мастера: статус чтения robots.txt (у Яндекса — отчёт, у Google — косвенно через URL Inspection).
- Проверка URL: URL Inspection (Google) и «Проверка URL» у Яндекса показывают, заблокирован ли URL robots.txt.
- Краулеры (Screaming Frog/Sitebulb): конфигурация «Obey robots.txt» → отчёт по блокам.
- Логи сервера: заходы ботов на robots.txt (Googlebot обращается минимум раз в сутки).
Что мониторить регулярно
| Метрика | Инструмент | Целевое состояние |
| HTTP‑статус robots.txt | Мониторинг/алёрты | Всегда 200 OK |
| Доступность sitemap | GSC/веб‑мастера/краулер | «Успешно», без 3xx/4xx/5xx |
| «Заблокировано robots.txt» | GSC → Индексация | Нет критичных «денежных» URL |
| Render‑результат | URL Inspection → Снимок | CSS/JS доступны |
| Частота обновления | Логи | 1×/сутки или чаще (крупные сайты) |
Цитата:
Любая авария с robots.txt — риск на весь сайт. Держите файл статическим, под мониторингом, в репозитории и за флагом «только чтение» на проде.
Кэширование и задержки
- Боты кешируют robots.txt (≈24 ч). При критичных правках можно временно продублировать запреты на уровне сервера (например, 403 для специфичных путей) и затем откатить.
— — —
7) Ошибки, которые дороже любой скидки
Топ‑ошибки и как исправлять
| Ошибка | Симптом | Исправление |
| Disallow: / (забыли снять после стейджинга) | Резкий спад обхода/индексации | Срочно вернуть доступ, добавить мониторинг и pre‑deploy чек |
| Блокировка CSS/JS | Страницы «не видит» как мобильные, сниппеты странные | Allow для папок со статикой |
| Надежда «Disallow деиндексирует» | URL остаются как «известные» | Разрешить обход + noindex или 404/410 |
| Неконсистентный хост/схема | Дубликаты http/https, www/non‑www | 301 + canonical + единый URL в sitemap/robots |
| Редиректы/5xx на robots.txt | Боты «ждут», сайт «закрыт» | Отдавайте статический 200 OK |
| Перебор с Disallow по параметрам | Блок глубины каталога | Управляйте дублями canonical’ом, оставьте пагинацию index |
| Сто параметров Clean-param | Случайные выбросы страниц из индекса | Актуализируйте список, не заменяйте им архитектуру |
Анти‑паттерны
- «Закроем фильтры в robots — и всё» — нет, вы лишь затрудняете обход, но не решаете дубль контента.
- «Стейджинг прикроем robots и хватит» — нет, поисковики всё равно могут зайти. Только авторизация.
- «Сделаем общий robots для всех поддоменов» — так нельзя. Нужен отдельный для каждого хоста.
— — —
8) Кейсы, чек‑лист и 90‑дневный план
Кейсы (цифры иллюстративные, подходы — реальные)
Кейс 1. eCommerce: «закрыли фильтры — закрыли продажи»
Контекст: крупный каталог, рост «мусорных» параметров. Команда закрыла всё, что содержало «?» в robots.txt.
Последствия: глубина категорий перестала краулиться; доля новых товаров, появляющихся в индексе, упала; SEO‑трафик с «хвоста» −22%.
Решение:
- Вернули пагинацию в индекс (self‑canonical на каждую страницу).
- Оставили Disallow только для внутренних параметров (sort, session, utm).
- На «умные» фильтры сделали SEO‑лендинги + уникальные интро.
Итог (8 недель): +31% кликов по фасетам, восстановление глубины индекса.
Кейс 2. Авария robots на стейджинге
Контекст: dev‑команда деплоит robots.txt с Disallow: / на прод.
Результат: через сутки в GSC всплеск «заблокировано robots.txt», трафик просел на 18% за 3 дня.
Решение:
- Немедленный откат, алёртинг на статус robots.txt, защита ветки файла от записи.
- Pre‑deploy чек‑лист в CI: проверка содержания robots.txt и доступности sitemap.
Итог: восстановление видимости за 1–2 недели, урок выучен.
Кейс 3. Медиа: ускорение обхода обновлений
Контекст: журнал обновляет гайды; бот лениво переобходит.
Решение:
- Чистый robots (не блокируем разделы с гайдами), lastmod в sitemap честный.
- Убрали «псевдо‑обновления» из lastmod.
Результат: время до переобхода обновлённых гайдов — с 5–7 дней до 24–48 часов, видимость +12%.
90‑дневный план внедрения
| Недели | Блок | Что делаем | Результат |
| 1–2 | Аудит | Инвентаризация служебных путей, параметров, SPA‑эндпоинтов | Бэклог правил |
| 3–4 | Проект | Проект robots.txt по типам страниц, шаблоны Allow/Disallow, Sitemap | Черновик и ревью |
| 5–6 | Генерация/деплой | Публикация файла, проверка 200 OK, добавление Sitemap, алёрты | Запуск |
| 7–8 | Отладка | Проверки URL (Inspection), краул по robots, логи | Фикс краул‑ошибок |
| 9–10 | Уточнение | Точная настройка параметров (Disallow/Canonical/Clean-param), CSS/JS allow | Стабильность рендера |
| 11–12 | Автоматизация | CI‑проверки, мониторинг статуса, алерты | Защита от аварий |
| 13 | Ретроспектива | Сверка KPI (индексация, клики), правки | Контур оптимизации |
Чек‑лист перед релизом robots.txt
- Структура файла
-
- Группы User-agent → Allow/Disallow оформлены корректно
- Критичные Allow/Disallow наверху (лимит 500 КБ)
- Правила
-
- Не блокируете CSS/JS, нужные для рендера
- Пагинация не закрыта, если нужна индексация глубины
- Закрыт внутренний поиск, корзина, кабинет, /admin
- Параметры: закрыты только служебные (sort, session, utm)
- Доп. директивы
-
- Sitemap: все актуальные карты перечислены
- Crawl-delay: только для Яндекса/Бинга при необходимости
- Host/Clean-param (если используете Яндекс) — проверены
- Инфраструктура
-
- /robots.txt отдаёт 200 OK, без редиректов
- Файл хранится в репозитории, защищён от случайного изменения
- Настроены алёрты на статус/содержимое файлов (hash‑мониторинг)
- Верификация
-
- URL Inspection/веб‑мастер: нет критичных «заблокировано robots.txt»
- Краулеры: obey robots — ошибок нет
- Логи: боты регулярно читают robots.txt и обходят важные разделы
— — —
Заключение
Файл robots.txt — инструмент управления обходом, а не волшебная кнопка «убрать из поиска». Его сила — в дисциплине: чисто закрываем служебные разделы, не мешаем рендерингу (CSS/JS), осознанно работаем с параметрами и вслух говорим роботу, где лежит «истина» (Sitemap). Для деиндексации используем noindex/HTTP‑коды, а не Disallow.
Ключевые правила:
- Проектируйте правила под архитектуру, а не наоборот.
- Не блокируйте то, что должно рендериться (CSS/JS) и индексироваться (пагинация).
- В проде robots.txt — статичный, под мониторингом, с алёртами.
- Любые правки — через чек‑лист и ревью: «одна строка» может стоить недели трафика.
