robots.txt и sitemap.xml: правильная настройка

Коротко

Файл robots.txt — это текстовый файл в корне сайта с правилами для поисковых роботов: какие разделы обходить можно, а какие нет, и где лежит карта сайта. Карта сайта sitemap.xml решает обратную задачу: она перечисляет страницы, которые вы хотите видеть в поиске. Вместе они помогают роботу тратить время на полезные страницы, а не на служебные адреса и дубли.

Оба файла выглядят простыми, но ошибки в них стоят дорого. Одна лишняя строка в robots.txt способна закрыть от поиска весь сайт, а карта сайта со старыми или закрытыми адресами сбивает робота с толку. Ниже — как устроены оба файла, как составить правильный robots.txt, как проверить его и как добавить sitemap в Яндекс Вебмастер.

ФайлЗачем нуженГде лежитЧем проверить
robots.txtОграничивает обход разделов и параметровКорень сайта: /robots.txtИнструмент анализа robots.txt в Яндекс Вебмастере
sitemap.xmlСообщает о страницах, которые нужно проиндексироватьОбычно корень сайта, адрес указывают в robots.txtРаздел файлов Sitemap в Вебмастере
meta robots / X-Robots-TagЗапрещает индексацию конкретной страницы или файлаВ коде страницы или в заголовке ответа сервераИсходный код, проверка ответа сервера

Основная мысль

robots.txt управляет обходом, а не индексацией: он говорит роботу, куда не ходить, но не гарантирует, что закрытая страница исчезнет из поиска, поэтому для удаления страниц из выдачи нужен noindex, а robots.txt — для экономии ресурсов робота и защиты от мусора.

Большинство ошибок с этим файлом происходит из-за путаницы между «не обходить» и «не показывать». Владелец закрывает раздел в robots.txt и ждёт, что страницы исчезнут из выдачи. Но если на них ведут ссылки, адрес может остаться в индексе без описания, а робот уже не сможет увидеть на странице запрет индексации.

Второй источник проблем — шаблоны. Файл копируют с другого сайта или из статьи пятилетней давности, с устаревшими директивами и правилами под чужую структуру. Правильный robots.txt всегда пишется под конкретный сайт: его CMS, адреса, фильтры и параметры.

Как устроен файл robots.txt

Файл лежит строго в корне домена и доступен по адресу вида https://example.ru/robots.txt. Для поддомена нужен свой файл. Сервер должен отдавать его с кодом 200 и в кодировке UTF-8.

Основные директивы

  • User-agent — для какого робота действует группа правил. Звёздочка означает всех роботов, отдельные группы можно задать, например, для Yandex.
  • Disallow — запрещает обход адресов, начинающихся с указанного пути.
  • Allow — разрешает обход внутри запрещённого раздела.
  • Sitemap — полный адрес карты сайта. Можно указать несколько.
  • Clean-param — директива Яндекса, которая говорит, что указанные параметры не меняют содержимое страницы и адреса с ними можно считать одним.

Спецсимволы

Символ * означает любую последовательность символов, $ — конец адреса. Правило Disallow: /*.pdf$ закроет все адреса, которые заканчиваются на .pdf. Без знака $ правило действует на все адреса, начинающиеся с указанного префикса.

Как робот выбирает правило

Если к адресу подходят и Allow, и Disallow, Яндекс и Google применяют более длинное, то есть более конкретное правило. При равной длине приоритет получает Allow. Порядок строк внутри группы на результат не влияет, но для читаемости разрешения обычно пишут рядом с запретами, к которым они относятся.

Отдельные группы для разных роботов

Можно задать общую группу для всех роботов и отдельную, например, для User-agent: Yandex. Важно помнить: робот выбирает одну, наиболее подходящую ему группу и игнорирует остальные. Если в группе для Яндекса указаны только Clean-param и пара запретов, общие правила из группы со звёздочкой на него уже не действуют. Поэтому отдельную группу либо делают полной копией общих правил с дополнениями, либо обходятся одной общей группой.

Если файл недоступен

Когда робот не может получить robots.txt, поведение зависит от ответа сервера. Если файла нет и сервер отвечает 404, роботы считают, что ограничений нет, и обходят всё. Если сервер отвечает ошибкой 5xx, поисковая система может временно приостановить обход сайта, чтобы не нарушить запреты, которые она не смогла прочитать. Поэтому стабильная отдача robots.txt — такая же часть технического здоровья сайта, как доступность главной.

Устаревшие директивы

Директиву Host Яндекс давно не учитывает: главное зеркало определяется по 301-редиректу и настройкам в Вебмастере. Crawl-delay Яндекс тоже не использует, скорость обхода настраивают в Вебмастере. Если эти строки остались в файле, они не вредят, но и не работают, и создают ложное ощущение настроенности.

Правильный robots.txt для сайта: что закрывать

Задача файла — убрать из обхода всё, что не несёт ценности для поиска, и не тронуть то, что нужно для отображения страниц.

Что обычно закрывают

  • служебные разделы и админку;
  • страницы поиска по сайту;
  • корзину, оформление заказа, личный кабинет;
  • адреса с параметрами сортировки, фильтрации, UTM-метками, идентификаторами сессий;
  • версии для печати и технические дубли;
  • тестовые разделы, если их нельзя закрыть паролем.

Что закрывать нельзя

  • файлы CSS и JavaScript, шрифты и изображения, которые нужны для отрисовки страниц;
  • страницы, которые вы хотите видеть в поиске, даже если они «некрасивые»;
  • страницы, с которых нужно убрать дубль через canonical: робот должен их прочитать, чтобы увидеть канонический адрес.

Пример для сайта на WordPress

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /*?orderby=

Sitemap: https://example.ru/sitemap_index.xml

Адреса корзины и кабинета зависят от настроек WooCommerce, их сверяют с реальными страницами сайта.

Пример для сайта на 1С-Битрикс

User-agent: *
Disallow: /bitrix/
Allow: /bitrix/templates/
Allow: /bitrix/components/
Allow: /bitrix/cache/
Allow: /bitrix/js/
Allow: /upload/
Disallow: /auth/
Disallow: /personal/
Disallow: /search/
Disallow: /*?sort=

Sitemap: https://example.ru/sitemap.xml

Раздел /bitrix/ закрывают, но открывают подпапки со стилями, скриптами и картинками, иначе поисковик увидит страницы без оформления. В 1С-Битрикс в модуле поисковой оптимизации есть инструменты для настройки robots.txt и генерации карты сайта, но результат их работы всё равно стоит проверить руками.

Robots.txt для интернет-магазина

У магазина больше всего проблем с обходом: фильтры, сортировки, пагинация и параметры создают тысячи адресов с одинаковыми товарами. Если не управлять ими, робот может обходить комбинации фильтров неделями и так и не добраться до новых карточек.

Фильтры и сортировки

Сортировки по цене, названию и популярности почти всегда закрывают: они меняют только порядок товаров. С фильтрами сложнее. Часть из них может быть полезна как посадочные страницы, например «диваны серые» или «кроссовки 42 размера», если под них есть спрос. Такие страницы лучше делать на отдельных понятных адресах с собственными заголовками, а технические адреса с параметрами фильтра закрывать.

Пагинация

Страницы вида ?PAGEN_1=2 в 1С-Битрикс или /page/2/ в WordPress обычно не закрывают в robots.txt полностью: через них робот находит товары, которых нет на первой странице каталога. Если товары хорошо представлены в карте сайта и в перелинковке, пагинацию можно оставить открытой для обхода, но не продвигать.

Корзина, сравнение, избранное

Эти страницы персональны и не несут ценности для поиска. Их закрывают вместе с адресами добавления товара в корзину и сравнение, если такие действия выполняются через ссылки с параметрами.

Как в robots.txt закрыть и запретить разделы

Запросы «robots txt закрыть» и «robots txt запретить» обычно означают одну из трёх задач: закрыть весь сайт, закрыть раздел или закрыть адреса с параметрами.

Закрыть весь сайт

User-agent: *
Disallow: /

Так делают на время разработки. Но для тестовой копии надёжнее закрыть доступ паролем на уровне сервера: robots.txt — это просьба, а не защита, и тестовый сайт с запретом в robots.txt всё равно может оказаться в поиске по внешним ссылкам. Главное — не перенести этот файл на рабочий сайт при запуске или переезде.

Закрыть раздел или тип файлов

  • Disallow: /private/ — всё, что начинается с /private/;
  • Disallow: /*.pdf$ — все PDF-файлы;
  • Disallow: /*print= — адреса с параметром версии для печати.

Запретить параметры для Яндекса

Для Яндекса вместо запрета адресов с параметрами можно использовать Clean-param. Например, строка Clean-param: utm_source&utm_medium&utm_campaign говорит роботу, что эти параметры не меняют содержимое, и адреса с ними он будет сводить к адресу без параметров. Google эту директиву не поддерживает, для него используют canonical.

Если страницу нужно убрать из поиска

Для удаления страницы из выдачи используют meta robots с noindex в коде страницы или HTTP-заголовок X-Robots-Tag для файлов вроде PDF. Страница при этом не должна быть закрыта в robots.txt, иначе робот не увидит запрет. После выпадения страницы из индекса её можно закрыть и в robots.txt, если это имеет смысл.

Sitemap.xml: как устроена карта сайта

Карта сайта — это XML-файл со списком адресов, которые вы хотите видеть в поиске. Робот использует её как подсказку: карта не гарантирует индексацию, но помогает быстрее находить новые и изменённые страницы.

Что должно быть в карте

  • только канонические адреса страниц, отдающих код 200;
  • только страницы, открытые для индексации;
  • дата последнего изменения lastmod, если она соответствует реальным изменениям.

Чего в карте быть не должно

  • адресов с редиректами и ошибками 404;
  • страниц, закрытых в robots.txt или через noindex;
  • дублей с параметрами;
  • служебных страниц: корзины, поиска, кабинета.

Ограничения и индексная карта

Один файл sitemap может содержать до 50 000 адресов и весить до 50 МБ в несжатом виде. Для больших сайтов делают индексный файл, который ссылается на несколько карт: отдельно для страниц, товаров, категорий, статей. Так проще находить ошибки: видно, в какой части сайта проблема. Параметры priority и changefreq многие поисковые системы не используют как значимый сигнал, поэтому тратить время на их тонкую настройку не нужно.

XML-карта и HTML-карта

XML-карта предназначена для роботов, посетители её не видят. HTML-карта — обычная страница со списком разделов для людей. Она может помогать перелинковке на небольших сайтах, но не заменяет XML-карту. Для большинства проектов достаточно продуманного меню, хлебных крошек и XML-карты.

Карта в WordPress и 1С-Битрикс

CMSОткуда берётся картаНа что обратить внимание
WordPress без плагиновВстроенная /wp-sitemap.xmlВ карту попадают архивы авторов и метки
WordPress с Rank Math или Yoast SEOКарта плагина, обычно /sitemap_index.xmlИсключить ненужные типы записей и таксономии
1С-БитриксГенератор в модуле поисковой оптимизацииНастроить автоматическое обновление и состав разделов

Robots.txt и sitemap.xml: как связать файлы

Связь простая: в robots.txt указывают полный адрес карты директивой Sitemap. Строку можно разместить в любом месте файла, она не относится к группе User-agent. Если карт несколько, указывают индексный файл или каждую карту отдельной строкой.

Частые противоречия

  • В карте есть адреса, закрытые в robots.txt. Робот получает два противоположных сигнала.
  • Карта указана по адресу с http, а сайт работает на https. Или наоборот, с www и без.
  • Директива Sitemap ведёт на несуществующий файл после смены SEO-плагина.
  • Карта формируется с тестового домена после переезда.

Такие противоречия легко пропустить, потому что оба файла по отдельности выглядят корректно. Проверять их нужно вместе.

Проверка robots.txt и sitemap

Проверка robots.txt в Яндекс Вебмастере

  1. Откройте в Вебмастере инструмент анализа robots.txt.
  2. Убедитесь, что загружена актуальная версия файла, и посмотрите, нет ли ошибок в синтаксисе.
  3. Внизу добавьте список адресов для проверки: главную, пару категорий, карточки товаров, статьи, служебные страницы.
  4. Проверьте, что нужные страницы разрешены, а служебные запрещены.
  5. Если нужно, отредактируйте текст прямо в инструменте, проверьте результат, а затем перенесите изменения в файл на сайте.

Яндекс Вебмастер: sitemap

Карту добавляют в разделе индексирования, в пункте о файлах Sitemap. После добавления Вебмастер покажет статус обработки и ошибки, если они есть. Обработка занимает время, поэтому сразу после добавления статус может быть «в очереди». Если в карте найдены ошибки, Вебмастер укажет, какие именно адреса или строки не прошли проверку. Для отдельной проверки файла в Вебмастере есть инструмент анализа файлов Sitemap.

Что ещё проверить

  • открывается ли /robots.txt по https и по основному зеркалу;
  • отдаёт ли сервер для него код 200, а не редирект на главную или 404;
  • совпадают ли адреса в карте с реальными адресами сайта;
  • не попадают ли в индекс страницы, которые вы закрывали: это видно в отчётах о страницах в поиске.

Если проблем много или непонятно, откуда они берутся, это повод для полноценного разбора. Как технические настройки влияют на продвижение, подробно описано в статье что такое техническое SEO.

Сценарии из практики

Ситуации собирательные, но встречаются регулярно.

После переезда сайт пропал из поиска

Сайт перенесли на новый сервер вместе с тестовым robots.txt, где стоял запрет на весь сайт. Через некоторое время страницы начали выпадать из индекса. Исправление — одна строка, но возвращение позиций занимает время. Поэтому при любом переносе robots.txt проверяют в первый же день. Порядок безопасного переезда описан в статье о переносе сайта на другой хостинг.

Сайт без оформления в глазах поисковика

В robots.txt для 1С-Битрикс закрыт весь раздел /bitrix/ без исключений. Поисковик видит страницы без стилей и скриптов, мобильная версия оценивается как неудобная. После открытия шаблонов и скриптов проблема уходит.

Карта сайта с тысячами редиректов

После смены структуры адресов карта сайта продолжает отдавать старые ссылки. Робот тратит время на редиректы, а новые страницы индексируются медленно. Решение — перегенерировать карту и настроить её автоматическое обновление.

Дубли из-за UTM-меток

Рассылки и реклама приводят трафик по адресам с UTM-метками, и эти адреса попадают в индекс как отдельные страницы. Строка Clean-param для Яндекса и canonical на страницах решают проблему.

Отдельная группа для Яндекса без общих правил

В файле есть общая группа с десятком запретов и отдельная группа для Яндекса, куда добавили только Clean-param. В результате для Яндекса перестали действовать все общие запреты, и в индекс попали корзина, поиск и страницы сортировки. Исправление — перенести общие правила в группу Яндекса или объединить группы в одну.

Типичные ошибки и чек-лист

Ошибки, которые встречаются чаще всего

  • Disallow: / на рабочем сайте. Остался с разработки или приехал при переносе.
  • Закрыты стили и скрипты. Поисковик не может оценить внешний вид страницы.
  • robots.txt вместо noindex. Страницу закрыли от обхода, а она осталась в выдаче.
  • Устаревшие директивы. Host и Crawl-delay в расчёте на то, что они работают.
  • Чужой шаблон. Правила под другую CMS и другую структуру адресов.
  • Карта с мусором. Редиректы, 404, закрытые страницы.
  • Нет проверки после изменений. Правку внесли и забыли проверить в Вебмастере.

Чек-лист

  • robots.txt открывается по адресу /robots.txt и отдаёт код 200.
  • Нет запрета на весь сайт, если сайт должен быть в поиске.
  • Служебные разделы, поиск, корзина и кабинет закрыты.
  • Стили, скрипты и изображения открыты.
  • Параметры фильтров и меток закрыты или описаны в Clean-param.
  • В robots.txt указан полный адрес карты сайта на основном зеркале.
  • Карта содержит только канонические страницы с кодом 200.
  • Карта добавлена в Яндекс Вебмастер и обрабатывается без ошибок.
  • Изменения проверены в инструменте анализа robots.txt.

Частые вопросы

Что считается правильным robots.txt?

Тот, что написан под конкретный сайт: закрывает служебные разделы и дубли, не трогает стили, скрипты и нужные страницы, указывает карту сайта и проходит проверку в Вебмастере без ошибок.

Где должен лежать файл robots.txt?

Только в корне домена, по адресу /robots.txt. Файл в подпапке роботы не найдут.

Нужен ли robots.txt для сайта, если скрывать нечего?

Желательно. Даже минимальный файл с указанием карты сайта полезен, а у любой CMS есть служебные разделы, которые не нужны в поиске.

Как указать sitemap в robots.txt?

Добавить строку Sitemap с полным адресом карты, включая протокол и домен. Строка может стоять в любом месте файла.

Как в robots.txt закрыть сайт от индексации?

Строки User-agent со звёздочкой и Disallow со слешем закрывают обход всего сайта. Для тестовой версии надёжнее пароль на уровне сервера.

Как запретить индексацию одной страницы?

Лучше через meta robots с noindex в коде страницы. robots.txt только запрещает обход, а страница может остаться в поиске.

Как сделать проверку robots.txt?

В Яндекс Вебмастере есть инструмент анализа robots.txt: он показывает ошибки и позволяет проверить, разрешён ли конкретный адрес.

Как добавить sitemap в Яндекс Вебмастер?

В разделе индексирования откройте пункт о файлах Sitemap, вставьте адрес карты и дождитесь обработки.

Как часто обновлять карту сайта?

Карта должна обновляться автоматически при появлении и изменении страниц. Ручная карта быстро устаревает.

Robots.txt и sitemap.xml обязательны?

Формально нет, но без них робот хуже понимает структуру сайта и чаще тратит время на ненужные страницы.

Итог

Файл robots.txt и карта сайта — два коротких файла, от которых зависит, как поисковые системы видят ваш сайт. robots.txt закрывает служебные разделы и дубли, sitemap.xml подсказывает, какие страницы важны. Главное — не путать запрет обхода с запретом индексации и следить, чтобы файлы не противоречили друг другу.

Проверяйте оба файла после каждого переезда, смены CMS, SEO-плагина или структуры адресов. Это занимает несколько минут в Яндекс Вебмастере и защищает от потерь, которые потом восстанавливаются неделями.

Если не уверены, что robots.txt и карта сайта настроены правильно, я как частный разработчик на WordPress и 1С-Битрикс проверю оба файла, отчёты Вебмастера и индексацию, найду причины проблем и исправлю их. Работаю напрямую, без посредников — подробности на странице аудита сайта.

Что будем искать? Например,Продвижение