13 мин чтения Поисковая оптимизация (SEO)

Файл robots.txt: что в нём писать и как проверить

выбор подрядчикапродвижение сайтов
Содержание11

Файл 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: *. Выдуманные директивы и чужие боты без документации не пишите.

Директива Google Яндекс Куда переносить, если в файле не действует
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 на том же хосте — в подкаталоге робот его не ищет. Имя строго в нижнем регистре, кодировка UTF-8.

Если URL закрыт в Disallow, он пропадёт из поиска?

Нет. Disallow просит не обходить страницу, но не удаляет её из индекса: адрес может остаться в выдаче по внешней ссылке. Чтобы исключить из индекса, нужен noindex на самой странице или снятие URL в панели.

Как проверить, что робот видит мой robots.txt?

Откройте /robots.txt в браузере: нужен код 200 и тип text/plain. Затем прогоните файл и конкретный URL через «Анализ robots.txt» в Яндекс.Вебмастере и проверку в Google Search Console.

Как закрыть сайт целиком от обхода?

Для всех роботов достаточно блока User-agent: * и директивы Disallow: /. Обход остановится, но уже проиндексированные URL сами из выдачи не исчезнут — их снимают noindex или инструментами панели.

Поделиться
ВКонтакте Telegram MAX

Расскажите о задаче — посчитаем смету

Ответьте на несколько вопросов: что за компания, какие разделы нужны, есть ли тексты и фотографии. Этого хватит, чтобы посчитать смету с фиксированной ценой и сроком — она бесплатна и ни к чему не обязывает.
Написать