Содержание11
- Что такое файл robots.txt и где он лежит
- Зачем robots.txt нужен и чего он не закрывает
- Синтаксис: User-agent, Disallow, Allow и Sitemap
- Как робот выбирает правило: *, $ и самый длинный путь
- Google и Яндекс: Host, Crawl-delay, Clean-param
- Какие URL закрывать в магазине, а какие — noindex
- Лимиты файла, кэш и коды ответа на /robots.txt
- Как создать файл и править его на CMS
- Чек-лист проверки и типовые ошибки
- Частые вопросы
- Источники
Файл robots.txt лежит в корне сайта и говорит поисковым роботам, какие URL обходить, а какие пропускать. Это рекомендация, а не гарантия исключения из индекса. Закрытый в Disallow адрес всё равно может попасть в выдачу по внешней ссылке. Ниже — синтаксис, шаблоны для визитки и магазина и чек-лист проверки в Google Search Console и Яндекс.Вебмастере.
Что такое файл robots.txt и где он лежит
Поисковый робот перед обходом остальных адресов запрашивает текстовый файл с правилами: какие URL скачивать, какие пропускать. Файл robots.txt лежит в корневом каталоге сайта и открывается только по адресу /robots.txt на том же хосте. Положите его в подкаталог или назовите Robots.TXT — для робота файла нет.
Файл существует для робота только по адресу https://домен/robots.txt — любой другой путь робот не ищет.
Имя пишите в нижнем регистре. Кодировка — UTF-8. Символ # начинает комментарий до конца строки. Директивы отделяйте переводом строки, как в обычном тексте.
Если файла нет, робот обходит сайт без ограничений. Так же RFC 9309 разбирает ответ 404 на /robots.txt: файла нет, обход без ограничений. Ответы 401 и 403 — другой случай, их не смешивайте с «файла нет».
Файл публичный. Браузер покажет его любому посетителю. Не кладите туда пароли, токены и «секретные» кабинеты. Строка в Disallow не маскирует путь: она просит поисковый робот этот путь не обходить.
Зачем robots.txt нужен и чего он не закрывает
Служебные страницы тратят обход впустую: админка, корзина, внутренний поиск, фильтры, тестовые разделы. Их закрывают в robots.txt, чтобы поисковый робот ходил по карточкам и статьям, а не по кабинету.
Директива Disallow запрещает обход. Она не удаляет URL из индекса. Закрытый адрес может остаться в выдаче, если на него стоит внешняя ссылка.
Закрытый в Disallow адрес может остаться в выдаче, если на него есть внешняя ссылка: файл не удаляет страницу из индекса.
В Google Search Console встречается статус вроде «Indexed, though blocked by robots.txt»: страница в индексе, хотя обход закрыт. В Яндекс.Вебмастере — «исключена: запрещено в robots.txt». Подпись смотрите в своей панели, не по чужому скриншоту.
Чтобы убрать документ из поиска, нужен мета-тег noindex на самой странице: он исключает URL из индекса, в отличие от Disallow. Либо снимите адрес инструментами панели, либо закройте раздел паролем.
Файл не прячет коммерческую тайну и личные данные. Кто открыл /robots.txt, видит директории, которые вы просите не обходить.
Синтаксис: User-agent, Disallow, Allow и Sitemap
Блок правил начинается с User-agent: так вы задаёте, для какого робота следующие строки. Дальше идут Disallow и Allow. Пустой Disallow: без пути разрешает обход всего сайта. Путь пишут от корня, без домена и протокола: /cart/, не полный URL.
Несколько блоков подряд допустимы. Робот возьмёт один набор — самый подходящий по имени, а не сумму всех строк файла.
# Служебное и поиск
User-agent: *
Disallow: /private/
Allow: /private/public.html
Disallow: /search
Disallow: /cart/
Sitemap: https://example.ru/sitemap.xml
Первая строка — комментарий, робот её пропускает. User-agent: * задаёт правила для всех, у кого нет своего блока. Disallow: /private/ закрывает ветку. Allow: /private/public.html разрешает путь внутри этого запрета. Поиск и корзина закрыты отдельно. Sitemap: принимает только абсолютный URL; таких строк может быть несколько. Карту сайта в XML здесь не разбираем — в файле нужен адрес, не содержимое.
Директивы пишите как в справке: User-agent, Disallow, Allow, Sitemap. На опечатку и «свой» синтаксис рассчитывать не стоит. Отдельный блок YandexBot нужен, только если правила для него другие, чем у *. Имена ИИ-краулеров берите из документации владельца бота, не из чужого шаблона.
| Директива | Что делает | Пример строки | Кто учитывает |
|---|---|---|---|
| User-agent | Адресует блок правил поисковому роботу | User-agent: * | Google и Яндекс |
| Disallow | Запрещает обход пути | Disallow: /cart/ | Google и Яндекс |
| Allow | Разрешает путь внутри запрета Disallow | Allow: /private/public.html | Google и Яндекс |
| Sitemap | Указывает адрес карты сайта | Sitemap: https://example.ru/sitemap.xml | Google и Яндекс |
Как робот выбирает правило: *, $ и самый длинный путь
Робот не складывает запреты из всех блоков. Сначала берёт наиболее конкретный User-agent: для Googlebot — блок Googlebot, если он есть, иначе *. Googlebot — поисковый робот Google, YandexBot — поисковый робот Яндекса. Общий блок их покрывает, пока вы не задали им отдельные правила.
Внутри выбранного блока сравнивают путь URL с шаблонами Allow и Disallow. Побеждает самое длинное совпавшее правило. Символ * заменяет любую последовательность. Символ $ означает конец URL. Так описывают матчинг справки поисковиков и RFC 9309; чужой совет «Allow всегда важнее» в файл не копируйте. Если два шаблона одной длины, прогоните URL в панелях, а не гадайте по блогу.
Алгоритм бесполезен, если /robots.txt отдаёт HTML-заглушку хостинга или закрыт авторизацией: робот не увидит ни *, ни $.
Частая ошибка: Disallow: /admin закрывает и /admin, и /administrator, потому что это префикс. Для каталога безопаснее путь со слэшем или якорь конца $ — и всё равно проверить оба URL.
| Шаблон в robots.txt | URL | Результат | Почему сработало это правило |
|---|---|---|---|
Disallow: /admin | /admin | обход запрещён | путь совпал с префиксом |
Disallow: /admin | /administrator | обход запрещён | /admin — начало /administrator |
Disallow: /admin$ | /admin | обход запрещён | $ совпал с концом пути |
Disallow: /admin$ | /admin/users | обход разрешён | после /admin есть хвост, $ не совпал |
Google и Яндекс: Host, Crawl-delay, Clean-param
Оба робота понимают один каркас: User-agent, Allow, Disallow, Sitemap. Остальное — не общий стандарт. Пишите в файл только то, что подтверждает актуальная справка нужной системы.
Типичному сайту студии — визитке или магазину — хватает общего блока User-agent: *. Crawl-delay не копируйте «на всякий случай»: часть роботов строку проигнорирует, и вы решите, что ограничили скорость обхода. Host и Clean-param в RFC 9309 не входят. Зеркало и параметры URL настраивают в Яндекс.Вебмастере, а не чужим шаблоном из 2015 года.
Отдельные имена Googlebot и YandexBot имеют смысл, когда правила расходятся: одному закрыть черновики, другому оставить. Для одинаковых запретов хватает User-agent: *. Выдуманные директивы и чужие боты без документации не пишите.
| Директива | Яндекс | Куда переносить, если в файле не действует | |
|---|---|---|---|
| User-agent, Allow, Disallow, Sitemap | учитывает | учитывает | оставить в robots.txt |
| Crawl-delay | не копировать вслепую | не копировать вслепую | только если робот это прямо принимает в своей справке |
| Host | не общий стандарт | не общий стандарт | зеркало в панели вебмастера |
| Clean-param | не общий стандарт | не общий стандарт | параметры URL в панели вебмастера |
Какие URL закрывать в магазине, а какие — noindex
Корзину, оформление заказа и личный кабинет закрывают в Disallow: роботу там нечего индексировать, а обход сгорает. Карточки и категории не трогают. Между этими полюсами нет одного «правильного всегда» способа — инструмент выбирают по типу URL и по входящим ссылкам.
Фасеты опасно слепо закрывать в robots.txt, если на них ведут пункты меню, теги или перелинковка. Робот не зайдёт, но URL уже известен — получите статус «в индексе, хотя запрещено». Тогда склеивают каноникалом на листинг без фильтра или ставят noindex на самой странице.
Мнение. Если на фасетные URL ведут внутренние ссылки, не закрывайте их в Disallow: склейте каноникалом или поставьте noindex на странице.
Визитке хватает запрета админки и внутреннего поиска. Магазинный шаблон на лендинг не копируйте: закроете то, чего на сайте нет, или наоборот оставите корзину открытой. Стили и скрипты не запрещайте: робот не соберёт страницу и оценит её иначе, чем браузер.
У каждого хоста свой /robots.txt. Поддомен города или языковая версия родительский файл не читают.
| Тип URL | robots.txt | noindex | Каноникал | Чем грозит ошибка |
|---|---|---|---|---|
| Корзина, checkout, кабинет | Disallow | не нужен, если робот не заходит | не нужен | служебные URL в обходе |
| Внутренний поиск | Disallow | запасной вариант на самой выдаче | нет | дубли запросов в индексе |
| Сессионные id | шаблон Disallow | нет | лучше убрать id из URL | бесконечные копии страниц |
| UTM-метки | не закрывать слепо | нет | на чистый URL | дубли или потеря меток |
| Фасеты и сортировки | только если нет внутренних ссылок | да, если страница открыта | на листинг без фильтра | «в индексе, хотя запрещено» |
| Print-версии | Disallow или noindex | да | на основную карточку | дубль контента |
| Карточки и категории | не трогать | нет | само на себя | закрытый каталог и потеря спроса |
Лимиты файла, кэш и коды ответа на /robots.txt
Робот читает не только текст файла, но и ответ сервера на /robots.txt. Код 200 и тип text/plain — разбор идёт. HTML-заглушка хостинга на этом адресе ломает правила: вместо директив робот видит вёрстку.
По RFC 9309 ответ 404 на /robots.txt значит: файла нет, обход без ограничений. Ответ 5xx — временная недоступность: робот может подождать или взять кэш.
Факт. В справке Яндекс.Вебмастера указано: роботы Яндекса корректно обрабатывают robots.txt, если размер файла не превышает 500 КБ.
Порог Google в этой статье не указываем: в справке Вебмастера назван лимит Яндекса. Что делает Googlebot при более длинном файле, смотрите в спецификации Google, без чужих «ориентиров».
Коды «нет доступа» и ошибки сервера системы трактуют по-своему: одна считает сайт закрытым, другая берёт старую копию. Срок кэша здесь не обещаем — в RFC 9309 и в цитатах справки Яндекса его нет. После деплоя проверяйте и сам файл, и конкретный URL: правка в редакторе не равна правке, которую уже видит робот.
Как создать файл и править его на CMS
Файл создают вручную: имя robots.txt, кодировка UTF-8, корень сайта. Готовность проверяют открытием https://ваш-домен/robots.txt, а не просмотром папки на диске.
- Создайте текстовый файл с именем
robots.txtв UTF-8. - Положите его в корневой каталог, рядом с главной страницей.
- Откройте
/robots.txtв браузере. - Убедитесь, что сервер отдаёт текст, а не HTML-заглушку.
- Прогоните тот же адрес в Вебмастере и Google Search Console.
На WordPress файл лежит в корне. Не правьте его через редактор тем: SEO-плагин перезапишет правила. Выберите одно место — корень или штатная настройка плагина.
В 1С-Битрикс файл тоже в корне, часть опций дублирует панель. Служебные каталоги лучше сразу заложить при настройке 1С-Битрикс, а не после того, как робот обошёл /bitrix/admin/.
Tilda и Wix часто не дают FTP-корень: файл собирают в настройках SEO конструктора, и произвольный синтаксис там режут. В Joomla файл лежит в корне. Расширения часто пишут свой robots.txt и затирают ручные правки.
Для визитки закройте админку и оставьте ajax, если он нужен формам. Для магазина — корзину, оформление, кабинет и поиск. Для GEO-поддомена города нужен свой файл на этом хосте: родительский поддомен его не читает.
# Визитка
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.ru/sitemap.xml
# Интернет-магазин
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /search
Sitemap: https://example.ru/sitemap.xml
# Поддомен города: только этот хост
User-agent: *
Disallow: /bitrix/
Sitemap: https://anapa.example.ru/sitemap.xml
Disallow закрывает служебное. Allow на ajax оставляет скрипт админки, который часто нужен формам. Каталог в шаблонах не трогаем. Если сайт ещё собираете, заложите файл на этапе разработки сайта, до индексации корзины и тестовых разделов.
Чек-лист проверки и типовые ошибки
Проверяют не «файл в редакторе», а конкретный URL: робот мог взять кэш или другой блок User-agent. Сначала код ответа /robots.txt, потом инструменты панелей, потом инспекция страницы.
- 01
Откройте
/robots.txtв браузере: нужен ответ 200 и типtext/plain, не HTML. - 02
В Яндекс.Вебмастере запустите «Анализ robots.txt» и сверьте, какой путь закрыт. Если сервис видел правки, на странице анализа доступен список версий за последние 6 месяцев — так описано в справке Яндекс.Вебмастера.
- 03
В Google Search Console проверьте тот же файл и тот же путь.
- 04
Проинспектируйте конкретный URL: отличается ли «запрещено в robots.txt» от «страница в индексе, хотя запрещена».
- 05 Если адрес уже в выдаче
Noindex, уберите внутренние ссылки, снимите URL в панели. Одного Disallow мало.
- 06
Повторите инспекцию после деплоя. Открытие файла в браузере не доказывает, что робот уже взял новую копию.
Синтаксис ломают чаще всего так: нет User-agent, кириллица в пути без кодирования, лишний пробел в директиве, Disallow: / вместо /cart/. Последнее закрывает весь сайт.
Закрыть обход целиком: User-agent: * и Disallow: /. Уже проиндексированные URL сами из выдачи не исчезнут — их снимают noindex или инструментами панели.
Если правите файл на рабочем магазине и не хотите закрыть каталог опечаткой, пришлите URL — разберём правило до выкладки.
Источники
- Использование файла robots.txt — Яндекс.Вебмастер
- Анализ robots.txt — Яндекс.Вебмастер
- Спецификация robots.txt — Google Search Central
- RFC 9309: Robots Exclusion Protocol — IETF