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

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; недоступность ломает управление обходом.

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

Чек-лист правильной настройки

Перед тем как считать настройку завершённой, пройдитесь по короткому списку проверок.

  1. robots.txt доступен по адресу site.ru/robots.txt и отдаёт код 200.
  2. В файле нет строки Disallow: / для нужных роботов.
  3. CSS, JS и изображения открыты для обхода.
  4. Закрыты корзина, личный кабинет, внутренний поиск, технические разделы.
  5. Для Яндекса настроен Clean-param для UTM-меток и сессионных параметров.
  6. Указана директива Sitemap с актуальным абсолютным адресом карты.
  7. sitemap.xml валиден, содержит только страницы с кодом 200, без дублей и закрытых URL.
  8. Соблюдены лимиты: до 50 000 URL и 50 МБ на файл, при превышении — индексный файл.
  9. Карта добавлена в Яндекс.Вебмастер, ошибок обработки нет.
  10. Для удаления страниц из индекса используются noindex или canonical, а не robots.txt.

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

Вывод

robots.txt и sitemap.xml — это фундамент технического SEO, с которого начинается работа над индексацией любого сайта. Несмотря на кажущуюся простоту, оба файла полны нюансов: приоритет директив по длине префикса, принципиальная разница между запретом обхода и запретом индексации, специфика Clean-param для Яндекса, лимиты карты и необходимость её отправки в Вебмастер. Одна ошибка здесь способна обнулить весь остальной труд над сайтом, поэтому к настройке стоит подходить системно и перепроверять результат через анализаторы.

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

Закажите SEO-продвижение в SEO ПРОГРЕСС

20 лет опыта, 250+ успешных кейсов. Бесплатный аудит и консультация.

Получить консультацию