Файл robots.txt: настройка без вреда для индексации
Файл robots.txt: как настроить без вреда для индексации
Одна лишняя строка в robots.txt способна выкинуть из поиска целый раздел сайта. Маркетолог закрыл от индексации тестовый поддомен, скопировал правило на боевой сайт, и через две недели органический трафик просел вдвое. Заметили не сразу: позиции падают плавно, а причину ищут где угодно, только не в текстовом файле из десяти строк.
robots.txt выглядит безобидно. На деле это первое, что читает поисковый робот, заходя на сайт, и от его содержимого зависит, какие страницы он вообще станет обходить. Ошибиться тут легко, а цена ошибки высокая: можно месяцами вкладываться в контент и ссылки, пока одна директива тихо блокирует половину работы.
Разберём, что этот файл умеет, чего от него ждать не стоит, и как настроить его так, чтобы он работал на индексацию.
Что такое robots.txt и что он на самом деле делает
robots.txt это текстовый файл в корне сайта, по адресу site.ru/robots.txt. В нём вы даёте поисковым роботам рекомендации: куда заходить можно, а куда не нужно. Формат простой, набор директив небольшой, редактируется в любом блокноте.
Важная оговорка, на которой спотыкаются почти все. robots.txt управляет обходом (краулингом). Индексацией напрямую он не управляет. Если вы запретили роботу заходить на страницу через Disallow, это не гарантия, что страница не попадёт в выдачу. Google прямо предупреждает: закрытая в robots.txt страница может проиндексироваться, если на неё ведут внешние ссылки, просто Google не увидит её содержимого и покажет в выдаче без описания.
Звучит парадоксально, но логика такая. Disallow говорит: «не ходи сюда». Робот не ходит, но про существование URL знает. Чтобы страница точно не оказалась в индексе, нужен мета-тег noindex на самой странице или HTTP-заголовок X-Robots-Tag. А для этого робот должен страницу прочитать, значит, в robots.txt её закрывать как раз нельзя. Это первая ловушка, и в неё попадают регулярно.
Базовый синтаксис: директивы по порядку
Файл состоит из блоков. Каждый блок начинается со строки User-agent, которая указывает, к какому роботу относятся правила ниже.
User-agent
User-agent: *
Звёздочка означает «все роботы». Можно адресовать правила конкретному: User-agent: Yandex или User-agent: Googlebot. Если для конкретного робота есть свой блок, он будет читать только его и проигнорирует блок со звёздочкой. Это частый источник путаницы: добавили отдельный блок для Яндекса, забыли продублировать в нём общие запреты, и Яндекс начал обходить то, что закрыто для всех остальных.
Disallow и Allow
Disallow закрывает путь от обхода, Allow открывает. Несколько примеров:
Disallow: /admin/ # закрыть весь раздел админки
Disallow: /*? # закрыть все URL с параметрами
Allow: /catalog/ # явно открыть каталог
Disallow: # пустое значение = разрешить всё
Пустой Disallow: без значения разрешает обход всего сайта. А вот Disallow: / с одним слешем закрывает весь сайт целиком. Разница в один символ, последствия противоположные.
Sitemap
Отдельная строка с полным адресом карты сайта. Её можно разместить в любом месте файла, она не привязана к блокам User-agent:
Sitemap: https://site.ru/sitemap.xml
Это помогает роботам быстрее найти список ваших страниц. Сама карта это отдельная тема, про её сборку и отправку стоит почитать подробнее, но ссылку на неё в robots.txt лучше поставить сразу.
Clean-param и Crawl-delay
Две директивы, которые понимает в основном Яндекс. Clean-param помогает склеить страницы с незначащими GET-параметрами (метки сессий, UTM), чтобы робот не считал их отдельными дублями:
Clean-param: utm_source&utm_medium /
Crawl-delay задавал паузу между запросами робота, но Яндекс от него отказался, а Google никогда не поддерживал. Сейчас скорость обхода регулируется через панели вебмастеров. Если видите Crawl-delay в чужом файле, это наследие старых шаблонов.
Что закрывать стоит, а что нет
Здесь работает простое правило: закрывайте то, что не несёт пользы в поиске и создаёт мусор или дубли.
Разумно закрыть от обхода:
- служебные разделы: админку, личные кабинеты, корзину, страницы оформления заказа;
- результаты внутреннего поиска по сайту (генерируют бесконечные пустые URL);
- технические страницы: фильтры с параметрами, страницы сортировки, дубли с метками;
- файлы скриптов и стилей в редких случаях, когда они реально служебные.
А вот чего делать нельзя ни при каких обстоятельствах. Не закрывайте CSS и JS, которые нужны для отрисовки страницы. И Яндекс, и Google рендерят страницы как браузер, и если робот не сможет загрузить стили и скрипты, он увидит сломанную вёрстку и может решить, что страница неудобна для пользователя. Лет десять назад закрывать /wp-content/ и /templates/ было нормой, сегодня это вредит.
| Закрывать | Оставлять открытым |
|---|---|
| /admin/, /wp-admin/ | Каталог, карточки товаров, услуги |
| /cart/, /checkout/ | Блог и статьи |
| Внутренний поиск /search/ | CSS и JS для рендеринга |
| URL с UTM-метками | Изображения, важные для поиска по картинкам |
Если задача в том, чтобы страница не попала в индекс (например, страница «спасибо» после отправки заявки), используйте noindex на странице. Disallow для этой задачи не подходит. Тогда робот зайдёт, прочитает запрет и исключит её из выдачи корректно.
Типичные ошибки, которые рушат индексацию
Большинство проблем сводится к нескольким сценариям. Видел их десятки раз.
Сайт случайно закрыт целиком. Самая болезненная. Разработчик закрывает сайт на время разработки строкой Disallow: /, выкатывает в продакшн и забывает её убрать. Сайт месяцами недоступен для роботов. Проверяйте robots.txt сразу после каждого релиза.
Закрыты ресурсы для рендеринга. Disallow на папки со скриптами и стилями. Страница в индексе есть, но поисковик видит её сломанной. Лечится удалением лишних запретов и проверкой через инструмент «Посмотреть как Googlebot» или его аналог в Яндекс Вебмастере.
Путаница Disallow и noindex. Хотели убрать страницу из выдачи, поставили Disallow. Робот не заходит, noindex на странице не читает, а страница всё равно висит в поиске по внешним ссылкам. Закрыли не тем инструментом.
Конфликт блоков User-agent. Отдельный блок для Яндекса перекрывает общий, и часть правил теряется. Если делаете блок под конкретного робота, дублируйте в нём всё нужное.
Кириллица в путях без кодирования. robots.txt работает только с ASCII. Русские URL и домены нужно записывать в кодировке Punycode и percent-encoding, иначе правило не сработает.
Регистр в путях. Для робота /Catalog/ и /catalog/ это разные пути. Если на сайте есть разный регистр, учитывайте это в правилах.
Многие из этих ошибок относятся к техническому SEO в целом, и проверять robots.txt стоит вместе с остальной технической оптимизацией сайта: индексацией, скоростью, корректными редиректами.
Как составить robots.txt с нуля: пошаговый разбор
Возьмём небольшой корпоративный сайт на условном движке.
Шаг 1. Откройте текстовый редактор, без форматирования. Кодировка UTF-8, без BOM.
Шаг 2. Начните с общего блока для всех роботов:
User-agent: *
Disallow: /admin/
Disallow: /search/
Disallow: /cart/
Disallow: /*?
Allow: /*?page=
Здесь мы закрыли админку, внутренний поиск, корзину и все URL с параметрами, но отдельным Allow вернули пагинацию, если она вам нужна в индексе.
Шаг 3. Добавьте карту сайта:
Sitemap: https://site.ru/sitemap.xml
Шаг 4. Если используете Яндекс и хотите склеить метки, добавьте Clean-param:
Clean-param: utm_source&utm_medium&utm_campaign /
Шаг 5. Сохраните файл строго под именем robots.txt и положите в корень сайта, чтобы он открывался по адресу site.ru/robots.txt. Не в подпапку, только в корень.
Шаг 6. Проверьте результат в валидаторе (об этом ниже).
Для большинства сайтов этого достаточно. Не усложняйте: чем короче и понятнее файл, тем меньше шансов ошибиться. Если у вас сложная структура с множеством фильтров и параметров, имеет смысл сначала навести порядок в структуре сайта под SEO, а уже потом закрывать лишнее в robots.txt.
Проверка: не доверяйте файлу на слово
Написать robots.txt мало, нужно убедиться, что он работает как задумано. Два бесплатных инструмента.
В Яндекс Вебмастере есть раздел «Инструменты, Анализ robots.txt». Вставляете содержимое файла, добавляете список URL, и сервис показывает, какие из них разрешены к обходу, а какие закрыты, и каким именно правилом. Удобно, когда нужно понять, почему конкретная страница не индексируется.
В Google Search Console есть отчёт о покрытии и инструмент проверки URL, который показывает, не блокирует ли robots.txt доступ к странице. Если страница важная и должна быть в индексе, а инструмент говорит «заблокировано в robots.txt», это сигнал к правке.
Проверяйте после каждого изменения файла и обязательно после переезда или релиза. Это пять минут, которые экономят недели восстановления трафика. Корректная индексация это часть фундамента, на котором держится органика, наряду с грамотными 301-редиректами и чистой структурой URL.
Частые вопросы
Нужен ли robots.txt маленькому сайту?
Формально без него сайт проиндексируется, роботы просто обойдут всё подряд. Но даже на лендинге полезно указать карту сайта и закрыть служебные адреса. Минимальный файл лучше его отсутствия: вы хотя бы контролируете, что робот видит.
Чем robots.txt отличается от мета-тега noindex?
robots.txt управляет обходом: заходить роботу на URL или нет. noindex управляет индексацией: показывать страницу в выдаче или нет. Если нужно убрать страницу из поиска, это noindex. Если нужно сэкономить ресурс робота и не пускать его в служебные разделы, это robots.txt. Закрытая в robots.txt страница может всё равно попасть в выдачу.
Как закрыть сайт от индексации полностью?
Строкой Disallow: / в блоке User-agent: *. Но помните: это запрет обхода, не гарантия отсутствия в выдаче. Для полного исключения на стадии разработки надёжнее закрыть сайт паролем (HTTP-аутентификация) или отдавать X-Robots-Tag: noindex на уровне сервера.
Почему страница в поиске, хотя я закрыл её в robots.txt?
Скорее всего, на неё ведут внешние ссылки, и поисковик добавил URL в индекс, не читая содержимого. Чтобы убрать страницу, откройте её в robots.txt и поставьте noindex на самой странице. Робот зайдёт, увидит запрет и исключит её.
Robots.txt для Яндекса и Google делать разный?
Обычно нет. Базовые директивы оба понимают одинаково. Отличия в деталях: Clean-param понимает Яндекс, Crawl-delay устарел у обоих. Чаще всего хватает одного блока User-agent: *. Отдельные блоки заводите, только когда роботам реально нужны разные правила.
Как часто нужно обновлять файл?
По мере изменения сайта. Появился новый служебный раздел, поменялась структура URL, переехали на новый движок: загляните в robots.txt. В спокойном режиме достаточно проверять его раз в несколько месяцев и обязательно после любого крупного релиза.
Коротко: чеклист перед публикацией
- Файл лежит в корне и открывается по адресу
site.ru/robots.txt. - Нет случайного
Disallow: /, закрывающего весь сайт. - CSS и JS для рендеринга открыты.
- Указана строка
Sitemapс полным адресом карты. - Служебные разделы и дубли с параметрами закрыты.
- Для исключения из выдачи использован noindex (Disallow тут не работает).
- Файл проверен в Яндекс Вебмастере и Google Search Console.
robots.txt это не место для экспериментов на боевом сайте. Настройте один раз внимательно, проверьте в валидаторах, и потом просто следите за изменениями. Если структура сайта запутанная, индексируется не то, что нужно, или после переезда просел трафик, мы в Lead The Way проводим технический аудит и приводим индексацию в порядок. Оставьте заявку, разберёмся, что мешает сайту собирать поиск.