robots.txt и sitemap.xml: настройка без ошибок
Два небольших служебных файла определяют, что поисковый робот увидит на сайте. Рассказываем, как настроить их без сюрпризов и проверить результат в панелях вебмастеров.
// содержание статьи
robots.txt и sitemap.xml — два самых маленьких файла на сайте и одни из самых недооценённых. Первый говорит роботу, куда ходить не стоит. Второй — какие страницы важны и где их искать. Вместе они задают маршрут, по которому поисковая система знакомится с сайтом.
Ошибка в любом из них может стоить дорого. Мы видели, как одна лишняя строка в robots.txt на неделю выкинула из поиска весь каталог магазина стройматериалов, и как карта сайта с тысячами мусорных адресов месяцами отвлекала робота от новых товаров. Ниже — практическое руководство: что писать, чего избегать и как проверять.
Как робот читает сайт
Прежде чем править файлы, полезно понять логику робота. Когда поисковая система приходит на сайт, она:
- Запрашивает файл robots.txt в корне домена и запоминает правила.
- Берёт список адресов для обхода — из ссылок, которые уже знает, из внешних ссылок и из карты сайта.
- Проверяет каждый адрес по правилам robots.txt и обходит только разрешённые.
- Загружает страницы, анализирует их и решает, добавлять ли в индекс.
Важный момент: robots.txt управляет обходом, а не индексацией. Если страница закрыта в robots.txt, но на неё много ссылок, Google может показать её в выдаче с пометкой «описание недоступно». Чтобы гарантированно убрать страницу из поиска, нужен мета-тег robots со значением noindex — и при этом страница должна быть открыта для обхода, иначе робот этот тег просто не увидит.
Синтаксис robots.txt без путаницы
Файл состоит из групп правил. Каждая группа начинается со строки User-agent — для какого робота правила — и продолжается директивами.
Основные директивы
- User-agent — имя робота. Звёздочка означает «все роботы». Можно сделать отдельные группы для Яндекса и Google.
- Disallow — запрещает обход адресов, начинающихся с указанного пути.
- Allow — разрешает обход, используется для исключений внутри закрытых разделов.
- Sitemap — полный адрес карты сайта. Директива межсекционная, её можно писать в любом месте файла.
- Clean-param — понимается только Яндексом. Говорит, какие GET-параметры не влияют на содержимое страницы и их можно игнорировать.
Спецсимволы
- Звёздочка заменяет любую последовательность символов.
- Знак доллара фиксирует конец адреса.
- Решётка начинает комментарий.
Когда для одного адреса подходят и Allow, и Disallow, побеждает правило с более длинным путём. При равной длине приоритет у Allow.
Пример для типового сайта услуг
User-agent: *
Disallow: /admin/
Disallow: /search/
Disallow: /cart/
Disallow: /*?sort=
Disallow: /*?utm_
Allow: /admin/uploads/
User-agent: Yandex
Disallow: /admin/
Disallow: /search/
Disallow: /cart/
Allow: /admin/uploads/
Clean-param: utm_source&utm_medium&utm_campaign&utm_content&utm_term
В конце файла добавляется строка Sitemap с полным адресом карты сайта на вашем домене, включая протокол. Пример мы здесь намеренно не приводим, чтобы не путать с реальным адресом.
Обратите внимание: если вы создали отдельную группу для Яндекса, он будет читать только её и проигнорирует общую группу со звёздочкой. Поэтому все нужные запреты придётся продублировать. Это одна из самых частых ошибок: владелец добавляет группу для Яндекса ради Clean-param и случайно открывает для него весь служебный раздел.
Что закрывать, а что оставлять открытым
Универсального списка нет, но есть устойчивые закономерности.
Обычно закрывают
- административную панель и личный кабинет;
- корзину, оформление заказа, страницы сравнения и избранного;
- результаты внутреннего поиска;
- адреса с параметрами сортировки, вида отображения, количества товаров на странице;
- технические копии страниц: версии для печати, служебные фильтры;
- тестовые разделы и страницы-заготовки.
Нельзя закрывать
- CSS и JavaScript. Поисковики рендерят страницы как браузер. Без стилей и скриптов робот увидит сломанную вёрстку и может решить, что сайт неудобен на мобильных.
- Изображения товаров и услуг, если вы хотите получать трафик из поиска по картинкам.
- Страницы пагинации — через них робот находит товары в глубине каталога.
- Полезные фильтры, под которые есть спрос. Например, «диваны угловые серые» в каталоге мебели — это отдельная посадочная, а не мусор. Подробнее о том, как отделить ценные фильтры от бесполезных, мы писали в статье о теговых страницах.
sitemap.xml: карта для робота
Карта сайта — это XML-файл со списком адресов, которые вы хотите видеть в индексе. Она не гарантирует индексацию, но помогает роботу быстрее находить новые и обновлённые страницы, особенно на больших сайтах и на сайтах со слабой перелинковкой.
Что должно быть в карте
Каждая запись содержит обязательный адрес страницы и необязательную дату последнего изменения. Поля приоритета и частоты обновления Google игнорирует, Яндекс учитывает их слабо, поэтому тратить на них силы не стоит. А вот дата изменения полезна — но только если она честная и меняется при реальном обновлении контента, а не при каждой генерации файла.
Правила хорошей карты сайта
- Только канонические адреса. Никаких версий с параметрами, со слешем и без, с разным регистром.
- Только страницы с кодом ответа 200. Редиректы и ошибки 404 из карты нужно убирать.
- Только страницы, открытые для индексации. Адрес с noindex или закрытый в robots.txt в карте — это противоречивый сигнал.
- Не больше 50 000 адресов и 50 мегабайт в одном файле. Для крупных сайтов делают индексный файл, который ссылается на несколько карт.
- Абсолютные адреса с тем же протоколом и доменом, что и основной сайт.
Разделение на несколько карт
Для интернет-магазина удобно держать отдельные карты для категорий, товаров, статей и статических страниц. Так в панели вебмастера сразу видно, какой тип страниц индексируется плохо. Если из 12 000 товаров в индексе только 4 000, а категории проиндексированы полностью, проблема явно в карточках — в дублях, тонком контенте или отсутствии в наличии.
Типичные ошибки и их последствия
За время аудитов у нас накопилась своя коллекция. Вот самые частые случаи, сведённые в таблицу.
| Ошибка | Что происходит | Как исправить |
|---|---|---|
| Disallow со слешем без пути в общей группе | Весь сайт закрыт от обхода | Удалить строку, проверить после выкладки |
| Перенос robots.txt с тестового сервера | Боевой сайт закрыт полностью | Хранить отдельные версии файла для окружений |
| Закрыты папки со стилями и скриптами | Робот видит сломанную страницу | Открыть ресурсы, нужные для отрисовки |
| В карте сайта адреса с редиректом | Робот тратит обход впустую | Генерировать карту из конечных адресов |
| Карта не обновляется | Новые страницы долго не индексируются | Настроить автоматическую генерацию |
| Отдельная группа для Яндекса без повторения запретов | Служебные разделы открыты для Яндекса | Продублировать все директивы |
| Попытка убрать страницу из индекса через Disallow | Страница остаётся в выдаче без описания | Использовать noindex при открытом обходе |
Особенно коварна вторая ошибка. Разработчик переносит сайт с тестового домена, где стоял полный запрет обхода, и забывает поменять файл. Через несколько дней позиции начинают сыпаться, а владелец ищет причину в чём угодно, кроме служебного файла на пару строк.
Как проверить настройки
Писать правила вслепую не нужно — у обеих поисковых систем есть инструменты проверки.
В Яндекс Вебмастере
- «Анализ robots.txt» показывает, какие строки распознаны, и позволяет проверить, разрешён ли конкретный адрес.
- В разделе «Файлы Sitemap» видно, когда робот последний раз загружал карту и нашёл ли ошибки.
- Отчёт «Страницы в поиске» подскажет, какие адреса исключены и почему.
В Google Search Console
- Отчёт о файле robots.txt показывает загруженную версию и ошибки парсинга.
- В разделе «Файлы Sitemap» видно число обнаруженных адресов.
- Инструмент проверки URL покажет, разрешён ли обход и попала ли страница в индекс.
Полезная привычка — после каждой выкладки на сайт открывать robots.txt в браузере и смотреть глазами. Это занимает десять секунд и спасает от катастроф.
Пошаговый порядок настройки для нового сайта
Если сайт только запускается, работайте в таком порядке:
- На время разработки закройте тестовую версию паролем, а не только robots.txt. Пароль надёжнее: адрес тестового домена рано или поздно утекает.
- Перед запуском составьте список служебных разделов и параметров, которые не должны попасть в поиск.
- Напишите robots.txt с группой для всех роботов и, при необходимости, отдельной группой для Яндекса с Clean-param.
- Настройте автоматическую генерацию карты сайта из CMS так, чтобы в неё попадали только канонические открытые страницы.
- Добавьте сайт в Яндекс Вебмастер и Search Console, отправьте карту сайта.
- Через неделю проверьте отчёты об исключённых страницах и поправьте правила.
Если сайт делаем мы, эти шаги входят в стандартный чек-лист запуска — подробнее в разделе о разработке сайтов под SEO.
Выводы
robots.txt и sitemap.xml работают в паре: первый ограничивает обход, второй подсказывает приоритеты. Чтобы они помогали, а не мешали:
- помните, что robots.txt управляет обходом, а не индексацией;
- не закрывайте стили, скрипты и полезные страницы фильтров;
- дублируйте запреты в отдельной группе для Яндекса;
- держите в карте сайта только канонические адреса с кодом 200;
- проверяйте оба файла после каждой выкладки и следите за отчётами в панелях вебмастеров.
Если в отчётах много исключённых страниц и непонятно, откуда они берутся, начните с чтения статьи о том, почему страницы не попадают в поиск, или доверьте разбор нам в рамках технической оптимизации.
$ help --seo
Хотите применить это на своём сайте?
Посмотрим сайт и подскажем, какие шаги дадут результат быстрее всего. Разбор бесплатный.