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

Два небольших служебных файла — robots.txt и sitemap.xml — определяют, как поисковые роботы взаимодействуют с вашим сайтом. От их правильной настройки зависит, какие страницы попадут в индекс Яндекса, насколько эффективно расходуется краулинговый бюджет и не утонут ли важные разделы в куче технических дублей. При этом ошибки именно в этих файлах относятся к категории фатальных: одна неверная строка в robots.txt способна закрыть от индексации весь сайт, а забытый или неактуальный sitemap.xml замедляет попадание новых страниц в выдачу. В этой статье разберём обе настройки подробно: какие директивы понимает Яндекс, что нужно закрывать, а что трогать нельзя, чем robots.txt принципиально отличается от noindex и canonical, как устроена карта сайта и какие лимиты у неё есть. Будет много примеров кода, которые можно адаптировать под свой проект.
Что такое robots.txt и зачем он нужен
robots.txt — это текстовый файл, который размещается в корне сайта по адресу site.ru/robots.txt и содержит инструкции для поисковых роботов. Когда робот Яндекса или Google заходит на сайт, первым делом он запрашивает именно этот файл, чтобы понять, какие страницы и разделы ему разрешено обходить, а какие нет. Это своего рода свод правил поведения для краулеров — рекомендательный по своей природе, но добросовестные поисковые системы его соблюдают.
Главная задача robots.txt — управлять обходом сайта, а не индексацией напрямую. Это важнейший нюанс, который путают чаще всего, и к нему мы вернёмся отдельно. Файл помогает решить несколько практических задач: скрыть от роботов служебные и технические разделы, не тратить ресурс обхода на бесконечные страницы фильтров и сортировок, указать поисковику путь к карте сайта и для Яндекса — обозначить параметры в URL, которые не влияют на содержимое страницы.
Файл должен быть в кодировке UTF-8, доступен по протоколу, на котором работает сайт, и отдавать код ответа 200. Если robots.txt отсутствует вовсе или отдаёт ошибку 5xx, робот может расценить это как разрешение обходить весь сайт целиком — что не всегда то, что вам нужно. Правильная работа с обходом тесно связана с понятием краулингового бюджета сайта: чем меньше мусорных URL видит робот, тем больше внимания достаётся действительно важным страницам.
Основные директивы robots.txt
Синтаксис robots.txt состоит из набора директив, каждая из которых пишется с новой строки в формате «имя директивы: значение». Разберём ключевые из них.
User-agent — указывает, для какого робота предназначены последующие правила. Это обязательная директива, с которой начинается каждый блок. Например, User-agent: Yandex адресует правила всем роботам Яндекса, User-agent: Googlebot — роботу Google, а User-agent: * — всем роботам сразу. Робот выбирает наиболее конкретный подходящий ему блок: если для Yandex прописан отдельный набор правил, он будет использовать именно его, игнорируя блок со звёздочкой.
Disallow — запрещает обход указанного пути. Например, Disallow: /admin/ закроет от обхода весь раздел админки, а пустая директива Disallow: (без значения) означает, что обходить можно всё. Disallow: / (со слешем) запрещает обход всего сайта — это та самая роковая строка, которая закрывает проект целиком.
Allow — разрешает обход пути, даже если он попадает под более общий Disallow. Используется для точечных исключений. Например, можно закрыть всю папку, но открыть в ней одну подпапку или файл.
Sitemap — указывает полный путь к карте сайта. Эта директива не привязана к конкретному User-agent и может находиться в любом месте файла, но по соглашению её принято размещать в конце. Указывается абсолютный URL, например Sitemap: https://site.ru/sitemap.xml.
Clean-param — специфичная для Яндекса директива, о которой подробно поговорим ниже. Она сообщает роботу, какие GET-параметры в URL не меняют содержимое страницы.
Host — устаревшая директива, которая раньше указывала главное зеркало сайта. Сейчас она не используется и поддержку её Яндекс прекратил.
Порядок и приоритет директив
Понимание того, как Яндекс выбирает правила при конфликте, избавляет от множества ошибок. Главное правило: при совместном использовании Allow и Disallow приоритет определяется по длине префикса URL — выигрывает более длинное (более конкретное) правило, независимо от порядка их следования в файле. Это поведение отличается от старой логики «кто выше, тот и прав», и его важно держать в голове.
Рассмотрим пример. Допустим, есть такие директивы: Disallow: /catalog/ и ниже Allow: /catalog/shoes/. Для страницы /catalog/shoes/nike/ обе директивы подходят, но Allow длиннее и конкретнее, поэтому страница будет открыта для обхода. А вот /catalog/bags/ попадёт только под Disallow и останется закрытой. Если же длины префиксов равны, приоритет у Allow.
Ещё один важный момент — поддержка спецсимволов. Символ * обозначает любую последовательность символов и неявно подставляется в конец каждого правила. То есть Disallow: /search фактически работает как Disallow: /search*. Символ $ снимает это неявное подставление и фиксирует конец строки: Disallow: /page$ закроет ровно /page, но не /page/subpage. Эти символы дают гибкость при настройке масок, но требуют аккуратности — неправильно поставленная звёздочка способна закрыть больше, чем планировалось.
Если для конкретного робота, например Yandex, прописан отдельный блок User-agent, то блок User-agent: * для него полностью игнорируется. Это значит, что нельзя задать общие правила в звёздочке и дополнить их в блоке Яндекса — придётся дублировать все нужные директивы внутри блока Yandex целиком.
Что нужно закрывать в robots.txt
Цель закрытия — убрать из обхода страницы, которые не должны попадать в поиск и только засоряют индекс. Перечислю типовые кандидаты на закрытие.
- Корзина, оформление заказа, личный кабинет. Это служебные страницы, не несущие ценности для поиска: Disallow: /cart/, Disallow: /checkout/, Disallow: /personal/.
- Страницы внутреннего поиска. Результаты поиска по сайту генерируют бесконечное количество низкокачественных URL: Disallow: /search/ или Disallow: /*?s=.
- Страницы фильтров и сортировок. Параметрические URL вида /catalog/?color=red&size=42 порождают комбинаторный взрыв дублей. Подход к их закрытию зависит от стратегии — иногда часть фильтров нужно, наоборот, индексировать как посадочные. Тонкости разобраны в материале про пагинацию и фильтры в SEO.
- UTM-метки и прочие маркетинговые параметры. URL с метками вроде ?utm_source=, ?gclid=, ?yclid= — это технические дубли основной страницы. Для Яндекса лучше использовать Clean-param, для остальных роботов — Disallow по маске.
- Технические и системные файлы. Папки CMS, скрипты, временные каталоги: Disallow: /cgi-bin/, Disallow: /tmp/, служебные пути движка.
- Дубли страниц для печати, версии с session id. Всё, что создаёт копии контента по разным адресам.
Закрытие мусорных URL напрямую помогает в борьбе с дублями. Эта тема настолько критична для позиций, что ей посвящён отдельный разбор — дубли страниц: убийца позиций, где показано, как одинаковый контент по разным адресам размывает релевантность.
Чего НЕ нужно закрывать в robots.txt
Не менее важно понимать, что закрывать категорически нельзя, потому что это вредит ранжированию и индексации.
- CSS и JavaScript-файлы. Это самая распространённая и опасная ошибка. Современный робот Яндекса рендерит страницы, как браузер, и если закрыть стили и скрипты, он не сможет корректно отобразить страницу, оценить её мобильную адаптивность и понять структуру контента. Закрытие /bitrix/, /wp-content/ или /assets/ без исключений для CSS и JS приводит к тому, что робот видит «сломанную» страницу. Если такие папки закрываются, обязательно добавляйте Allow для ресурсов: Allow: /wp-content/*.css, Allow: /wp-content/*.js.
- Важные разделы сайта. Очевидно, но на практике встречается: случайно закрытый каталог, блог или категория. Перед публикацией robots.txt всегда перепроверяйте, что основные посадочные страницы открыты.
- Изображения, которые должны участвовать в поиске по картинкам. Если вы рассчитываете на трафик из Яндекс.Картинок, не закрывайте папки с изображениями.
- Страницы, которые уже нужно убрать из индекса. Парадокс: чтобы удалить страницу из индекса через noindex, робот должен иметь к ней доступ. Закрытие в robots.txt помешает ему увидеть метатег. Об этом — в следующем разделе.
Ошибки с закрытием ресурсов и важных разделов — частая причина проседания трафика. Подробный чек-лист подобных проблем собран в статье про технические ошибки сайта.
Главное заблуждение: robots.txt не запрещает индексацию
Это ключевой тезис всей статьи, и его нужно усвоить раз и навсегда. Директива Disallow запрещает роботу обходить (сканировать) страницу, но не гарантирует, что страница не попадёт в индекс. Если на закрытую в robots.txt страницу ведут внешние или внутренние ссылки, Яндекс может добавить её в индекс без обхода содержимого — в выдаче такая страница появится с пометкой, что описание недоступно из-за ограничений в robots.txt.
Получается обратная ситуация: вы хотели убрать страницу из поиска, закрыли её в robots.txt, но она всё равно индексируется, причём без нормального сниппета. Чтобы действительно исключить страницу из индекса, нужно использовать другие инструменты.
Метатег noindex. В секции head страницы размещается тег с директивой noindex для роботов. Яндекс понимает запись вида meta name robots content noindex. Чтобы робот увидел этот тег, страница должна быть открыта для обхода — то есть НЕ закрыта в robots.txt. Это и есть та логическая ловушка: noindex и Disallow одновременно не работают.
Атрибут canonical. Для борьбы с дублями правильнее не запрещать страницу, а указать через rel canonical, какая версия URL является основной. Поисковик объединяет сигналы и показывает в выдаче каноническую страницу. Это корректный способ работы с фильтрами, сортировками и параметрическими URL. Механика подробно описана в материалах про канонические URL и canonical и про дубли страниц.
Резюме по выбору инструмента: robots.txt — чтобы не тратить ресурс обхода на мусор; noindex — чтобы убрать конкретную страницу из индекса; canonical — чтобы склеить дубли и передать вес основному URL. Эти механизмы дополняют друг друга, а не заменяют.
Директива Clean-param для Яндекса
Clean-param — мощный инструмент именно для Яндекса, которого нет в robots.txt для Google. Он сообщает роботу, что определённые GET-параметры в URL не влияют на содержимое страницы, и робот может игнорировать их при обходе, считая такие URL одной страницей. Это эффективнее, чем Disallow, потому что Яндекс склеивает параметрические адреса с основным и не тратит на них бюджет обхода, а также передаёт накопленные показатели на основной URL.
Синтаксис: Clean-param: параметр путь. Например, Clean-param: utm_source&utm_medium&utm_campaign / сообщит, что все UTM-метки по всему сайту можно игнорировать. Несколько параметров перечисляются через амперсанд. Можно ограничить действие конкретным путём: Clean-param: ref /catalog/ применит правило только к разделу каталога.
Типичные кандидаты для Clean-param: метки рекламных кампаний (utm_source, utm_medium, gclid, yclid), идентификаторы сессий, параметры сортировки, которые не меняют состав контента, параметры партнёрских ссылок. Это правильный способ навести порядок с UTM-метками для Яндекса — лучше, чем грубое закрытие через Disallow, которое не склеивает сигналы. Для остальных поисковиков параметры всё равно стоит контролировать через canonical.
Примеры готового robots.txt
Соберём типовой robots.txt для интернет-магазина. Обратите внимание на структуру: общий блок для всех роботов и отдельный блок для Яндекса с Clean-param.
- User-agent: *
- Disallow: /cart/
- Disallow: /checkout/
- Disallow: /personal/
- Disallow: /search/
- Disallow: /*?s=
- Disallow: /*utm_*
- Disallow: /admin/
- Allow: /assets/*.css
- Allow: /assets/*.js
- User-agent: Yandex
- Disallow: /cart/
- Disallow: /checkout/
- Disallow: /personal/
- Disallow: /search/
- Disallow: /admin/
- Allow: /assets/*.css
- Allow: /assets/*.js
- Clean-param: utm_source&utm_medium&utm_campaign&yclid&gclid /
- Sitemap: https://site.ru/sitemap.xml
Минимальный корректный robots.txt, который не закрывает ничего лишнего и просто указывает карту сайта, выглядит так: User-agent: *, пустой Disallow:, и строка Sitemap с адресом карты. Такой вариант подойдёт для небольшого сайта-визитки или блога без сложной структуры.
Обратите внимание: в блоке Yandex директивы Disallow продублированы, потому что наличие отдельного User-agent: Yandex заставляет робота игнорировать блок со звёздочкой полностью. Если этого не сделать, для Яндекса будет работать только Clean-param, а все запреты потеряются.
Что такое sitemap.xml и зачем он нужен
sitemap.xml — это карта сайта в формате XML, файл со списком всех URL, которые вы хотите видеть в индексе. Если robots.txt говорит роботу, куда ходить нельзя, то sitemap.xml, наоборот, подсказывает, какие страницы существуют и достойны обхода. Это особенно важно для крупных сайтов со сложной структурой, где некоторые страницы могут быть слабо связаны внутренней перелинковкой и робот рискует их не найти.
Карта сайта решает несколько задач. Во-первых, ускоряет обнаружение новых и обновлённых страниц — робот регулярно перечитывает sitemap и видит свежие URL. Во-вторых, помогает роботу расставить приоритеты обхода через дополнительные атрибуты. В-третьих, для больших сайтов с тысячами страниц это часто единственный надёжный способ донести до поисковика полную структуру. Связь sitemap с эффективным обходом снова возвращает нас к теме краулингового бюджета: грамотная карта помогает роботу не распыляться.
Структура sitemap.xml и атрибуты
Файл sitemap.xml имеет строгую XML-структуру. Он начинается с объявления XML-версии и кодировки, затем идёт корневой элемент urlset с указанием пространства имён протокола sitemaps.org. Внутри располагаются элементы url, каждый из которых описывает один адрес.
Каждый блок url содержит обязательный тег loc — полный абсолютный URL страницы, включая протокол и домен. URL должен точно совпадать с тем, как страница реально доступна: тот же протокол https, то же написание с www или без, тот же регистр. Несоответствия порождают путаницу и лишние редиректы.
Дополнительные необязательные теги внутри url:
- lastmod — дата последнего изменения страницы в формате года-месяца-дня. Это самый полезный из дополнительных атрибутов: он подсказывает роботу, что страница обновилась и её стоит переобойти. Важно, чтобы дата была достоверной — если ставить текущую дату всем страницам автоматически, робот перестанет доверять этому сигналу.
- changefreq — предполагаемая частота изменения страницы (always, hourly, daily, weekly, monthly, yearly, never). Современные поисковики, включая Яндекс, относятся к этому тегу как к слабой рекомендации и во многом его игнорируют.
- priority — относительный приоритет страницы от 0.0 до 1.0. Тоже носит рекомендательный характер и реального влияния на ранжирование не оказывает — это распространённое заблуждение. priority не повышает позиции, он лишь намекает на относительную важность внутри вашего же сайта.
На практике достаточно корректно заполнять loc и lastmod, а changefreq и priority можно опускать без всякого вреда. Главное — чтобы карта была валидной, актуальной и содержала только реально существующие, отдающие код 200 страницы, без редиректов, дублей и закрытых в robots.txt URL.
Лимиты sitemap и индексный файл карт
У карты сайта есть жёсткие технические ограничения, которые нужно соблюдать. Один файл sitemap.xml может содержать не более 50 000 URL и весить не более 50 МБ в несжатом виде. Если ваш сайт крупнее, нужно разбивать карту на несколько файлов.
Для управления множеством карт используется индексный файл sitemap — карта карт. Это отдельный XML-файл с корневым элементом sitemapindex, внутри которого перечисляются блоки sitemap, каждый со своим loc (путь к конкретной карте) и опциональным lastmod. Например, можно сделать sitemap-catalog.xml для товаров, sitemap-blog.xml для статей, sitemap-pages.xml для статических страниц, а в индексном sitemap.xml собрать ссылки на все три. Именно индексный файл указывается в robots.txt и отправляется в Вебмастер.
Разбиение по смысловым группам удобно ещё и тем, что в Яндекс.Вебмастере можно отслеживать индексацию каждого раздела отдельно и быстрее замечать проблемы. Файлы карт можно сжимать в gzip для экономии — лимит при этом считается по распакованному размеру.
Отправка sitemap в Яндекс.Вебмастер
Создать карту мало — нужно сообщить о ней поисковику. Есть два основных способа. Первый, базовый: указать путь к карте в robots.txt директивой Sitemap. Робот обнаружит её при очередном обходе. Второй, более надёжный и быстрый: добавить карту вручную в Яндекс.Вебмастере в разделе индексирования, в инструменте файлов sitemap. Лучше использовать оба способа одновременно.
После добавления Вебмастер начинает обрабатывать карту, показывает количество найденных URL, дату последней загрузки и ошибки, если они есть. Регулярно проверяйте этот раздел: расхождение между числом страниц в карте и числом проиндексированных страниц — важный диагностический сигнал. Полный разбор работы с панелью есть в гайде по Яндекс.Вебмастеру.
Для ускорения попадания новых страниц в индекс sitemap стоит дополнить технологией IndexNow, которая моментально уведомляет Яндекс об изменениях. Связка карты сайта и IndexNow даёт наилучшую скорость индексации — об этом подробно в статье про IndexNow и быструю индексацию.
Частые фатальные ошибки и как их избежать
Соберём список самых тяжёлых ошибок, связанных с этими файлами, — именно они чаще всего приводят к катастрофическим последствиям для трафика.
- Закрыли весь сайт через Disallow: /. Классика жанра: эту строку оставляют после переноса сайта с тестового домена на боевой. Сайт исчезает из индекса целиком. Всегда проверяйте robots.txt сразу после публикации.
- Забыли указать sitemap. Карта создана, но не прописана в robots.txt и не добавлена в Вебмастер — робот о ней не знает, и весь эффект теряется.
- Закрыли CSS и JS. Робот не может отрендерить страницу, страдает оценка мобильной адаптивности и качества контента.
- Перепутали robots.txt и noindex. Закрыли страницу в robots.txt, ожидая удаления из индекса, а она там осталась без сниппета. Или, наоборот, поставили noindex на страницу, закрытую в robots.txt, и робот его не увидел.
- Карта содержит закрытые или несуществующие URL. Противоречие, когда в sitemap есть страницы, запрещённые в robots.txt или отдающие 404 и редиректы. Это снижает доверие робота к карте.
- Неактуальный lastmod на всех страницах сразу. Автоматическая простановка текущей даты обесценивает сигнал.
- robots.txt отдаёт ошибку или недоступен. Файл должен возвращать код 200; недоступность ломает управление обходом.
Последствия таких ошибок бывают драматичными — вплоть до полного выпадения проекта из поиска. Если ваш сайт уже пострадал, начните диагностику с разбора почему сайт выпал из индекса. Системная проверка и настройка этих файлов входит в комплекс работ по внутренней оптимизации, а если нужна разовая правка движка и шаблонов — поможет техническая поддержка и доработка сайта.
Чек-лист правильной настройки
Перед тем как считать настройку завершённой, пройдитесь по короткому списку проверок.
- robots.txt доступен по адресу site.ru/robots.txt и отдаёт код 200.
- В файле нет строки Disallow: / для нужных роботов.
- CSS, JS и изображения открыты для обхода.
- Закрыты корзина, личный кабинет, внутренний поиск, технические разделы.
- Для Яндекса настроен Clean-param для UTM-меток и сессионных параметров.
- Указана директива Sitemap с актуальным абсолютным адресом карты.
- sitemap.xml валиден, содержит только страницы с кодом 200, без дублей и закрытых URL.
- Соблюдены лимиты: до 50 000 URL и 50 МБ на файл, при превышении — индексный файл.
- Карта добавлена в Яндекс.Вебмастер, ошибок обработки нет.
- Для удаления страниц из индекса используются noindex или canonical, а не robots.txt.
Проверить корректность файла удобно через встроенный в Яндекс.Вебмастер анализатор robots.txt: он показывает, как робот интерпретирует ваши правила, и позволяет протестировать обход конкретных URL до выкатки изменений на боевой сайт.
Вывод
robots.txt и sitemap.xml — это фундамент технического SEO, с которого начинается работа над индексацией любого сайта. Несмотря на кажущуюся простоту, оба файла полны нюансов: приоритет директив по длине префикса, принципиальная разница между запретом обхода и запретом индексации, специфика Clean-param для Яндекса, лимиты карты и необходимость её отправки в Вебмастер. Одна ошибка здесь способна обнулить весь остальной труд над сайтом, поэтому к настройке стоит подходить системно и перепроверять результат через анализаторы.
Если вы не уверены в своих силах или не хотите рисковать индексацией коммерческого проекта, доверьте техническую настройку профессионалам. Специалисты SEO ПРОГРЕСС грамотно настроят robots.txt и sitemap.xml, закроют дубли, наведут порядок с параметрами и проконтролируют индексацию в Яндексе. Посмотрите наши кейсы, чтобы оценить результаты, и свяжитесь с нами через страницу контактов — поможем вашему сайту попасть в индекс и занять верхние позиции.
Закажите SEO-продвижение в SEO ПРОГРЕСС
20 лет опыта, 250+ успешных кейсов. Бесплатный аудит и консультация.
Получить консультацию