Раздел 3.1 · Индексация и управление обходом Урок 14 из 89

3.1.3robots.txt, sitemap.xml и метатег robots

Три инструмента, которыми сайт объясняет поисковикам, что обходить, что индексировать и какие страницы важны. Разбираем синтаксис, разницу между запретом обхода и запретом индексации и типичные ошибки.

8 мин чтения 5 разделов

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

Ниже — как устроены все три инструмента, для чего каждый предназначен и как не перепутать задачи, которые они решают. Как в целом проверять индексацию, рассказано в уроке «Индексация: как поисковик находит и сохраняет страницы».

robots.txt: правила обхода

robots.txt — текстовый файл, который лежит строго в корне сайта, по адресу вида https://example.ru/robots.txt. Поисковые роботы читают его перед обходом и узнают, какие разделы им не нужно запрашивать. Файл состоит из групп правил, каждая начинается со строки User-agent.

User-agent: *
Disallow: /cart/
Disallow: /search/
Disallow: /*?sort=
Allow: /search/brands/

User-agent: Yandex
Disallow: /cart/
Disallow: /search/
Disallow: /*?sort=
Allow: /search/brands/
Clean-param: utm_source&utm_medium&utm_campaign /

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

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

  • User-agent — к какому роботу относится группа; звёздочка означает «ко всем».
  • Disallow — путь, который запрещено обходить. Поддерживаются символы * (любая последовательность символов) и $ (конец адреса).
  • Allow — исключение из запрета: разрешает обход вложенного пути внутри закрытого раздела. При конфликте побеждает более длинное, то есть более конкретное правило.
  • Sitemap — полный адрес карты сайта; директива не привязана к группе и может стоять в любом месте файла.
  • Clean-param — директива только для Яндекса: перечисляет параметры, которые не меняют содержимое страницы (метки, идентификаторы сессий), чтобы робот считал адреса с ними и без них одной страницей.

Обратите внимание на важную деталь, которая видна в примере. Робот выбирает одну группу — ту, в которой указан именно он, — и выполняет только её. Если в файле есть отдельная группа для Яндекса, общие правила из группы со звёздочкой Яндекс не прочитает, поэтому все нужные запреты приходится повторять. Директива Host, которой раньше указывали главное зеркало, больше не используется: зеркала склеиваются редиректом.

Правила для типовых задач

Большинство сайтов закрывают от обхода похожий набор разделов. Ниже — несколько распространённых правил с пояснениями.

Disallow: /cart/          # корзина и оформление заказа
Disallow: /personal/      # личный кабинет
Disallow: /search/        # результаты внутреннего поиска
Disallow: /*?sort=        # адреса с параметром сортировки
Disallow: /*print=        # версии для печати
Disallow: /*.pdf$         # все файлы PDF
Allow: /upload/*.pdf$     # кроме PDF в разделе загрузок

Комментарии после символа # робот игнорирует, но они помогают коллегам понять, зачем добавлено каждое правило. Символ $ в конце означает, что адрес должен заканчиваться именно так: правило /*.pdf$ закроет файлы PDF, но не страницы, в адресе которых встречается «pdf» в середине.

Прежде чем закрывать раздел, задайте себе два вопроса. Есть ли в нём страницы, которые должны приносить трафик? И ведут ли из него ссылки на важные страницы, которые робот может найти только так? Если ответ на любой вопрос положительный, полный запрет обхода — плохое решение, и задачу лучше решать через canonical или noindex на отдельных страницах. Закрывать в robots.txt стоит то, что поиску не нужно ни при каких условиях: корзину, личный кабинет, служебные скрипты, бесконечные комбинации параметров.

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

Запрет обхода и запрет индексации — разные вещи

Самая распространённая ошибка — пытаться убрать страницу из поиска через robots.txt. Disallow запрещает роботу скачивать страницу, но не запрещает поисковику знать о ней. Если на закрытый адрес ведут ссылки, он может появиться в выдаче — без описания, с пометкой о том, что информация недоступна.

Для исключения страницы из индекса предназначен метатег robots в разделе head:

<meta name="robots" content="noindex, follow">

Значение noindex запрещает индексировать страницу, follow разрешает переходить по ссылкам на ней. Для файлов, в которые нельзя вставить метатег, — PDF, документов, изображений — ту же команду передают HTTP-заголовком X-Robots-Tag: noindex.

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

ИнструментЧто делаетКогда применять
Disallow в robots.txtЗапрещает обход разделаТехнические разделы, корзина, личный кабинет, бесконечные комбинации фильтров
Метатег robots noindexЗапрещает индексацию страницы, обход разрешёнСтраницы, нужные посетителям, но не поиску: внутренний поиск, служебные списки
X-Robots-TagТо же, что noindex, но в заголовке ответаPDF и другие файлы, массовые правила на уровне сервера
rel="canonical"Указывает основную версию среди похожих страницДубли с параметрами, сортировками, похожие товары

Как выбирать между canonical, редиректом и noindex для дублей, разобрано в уроке «Дубли, canonical и редиректы».

sitemap.xml: список важных страниц

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

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.ru/catalog/divany/</loc>
    <lastmod>ГГГГ-ММ-ДД</lastmod>
  </url>
</urlset>

Правила хорошей карты сайта

  • Только канонические адреса с кодом ответа 200, открытые для индексации. Редиректы, страницы с ошибками, дубли и закрытые через noindex адреса в карте сбивают поисковик с толку.
  • Один файл — не больше 50 000 адресов и 50 МБ в несжатом виде. Если адресов больше, создают несколько файлов и индексный файл карты, который перечисляет их все. Файлы можно сжимать в gzip.
  • Дата lastmod должна отражать реальное изменение содержимого. Если она обновляется у всех страниц каждый день, поисковики перестают ей доверять.
  • Поля priority и changefreq большинство поисковиков игнорирует или учитывает слабо — тратить силы на их настройку не стоит.
  • Карту генерирует CMS автоматически, а не собирают вручную раз в год: иначе новые страницы в неё не попадают.

Адрес карты указывают в robots.txt и отдельно добавляют в Вебмастер и Search Console — там же видно, сколько адресов из неё поисковик прочитал и сколько включил в индекс.

Несколько карт для большого сайта

На крупных сайтах удобно делить карту по типам страниц: отдельный файл для категорий, для карточек товаров, для статей, для страниц брендов. Индексный файл перечисляет их все, а в панелях вебмастеров каждый файл виден отдельно. Так проще заметить, что проблема касается одного типа страниц: например, из карты товаров проиндексирована половина адресов, а категории — почти все. Для новостных сайтов иногда делают отдельную карту свежих материалов, чтобы поисковик быстрее узнавал о публикациях. Карты изображений и видео — ещё один вариант, если поиск по картинкам и роликам приносит заметный трафик.

Типичные ошибки

  • Полный запрет после разработки. Строка Disallow: / на рабочем сайте. Проверяйте robots.txt после каждого релиза, а тестовые стенды закрывайте паролем, а не только файлом robots.txt.
  • Закрытые стили и скрипты. Если запретить обход CSS и JavaScript, поисковик не сможет отрисовать страницу и оценить её вид на телефоне.
  • Слишком широкие маски. Правило Disallow: /catalog без завершающего слеша закроет и /catalog/, и /catalog-sale/. Пути чувствительны к регистру.
  • Конфликт robots.txt и noindex. Страница закрыта от обхода, и робот не видит метатег, который должен её исключить.
  • Мусор в карте сайта. Адреса с редиректами и ошибками, служебные страницы, сотни почти пустых тегов.
  • Забытая группа для Яндекса. Новый запрет добавили только в группу со звёздочкой, а отдельная группа Yandex осталась без него.

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

Что сделать после урока

  • Откройте robots.txt своего сайта и проверьте, нет ли в нём полного запрета, закрытых CSS и JavaScript и групп, которые расходятся друг с другом.
  • Добавьте Clean-param для меток и идентификаторов сессий в группу для Яндекса.
  • Найдите страницы, которые вы пытались убрать из поиска через Disallow, и переведите их на noindex с открытым обходом.
  • Проверьте, что sitemap.xml генерируется автоматически и содержит только канонические страницы с кодом 200.
  • Добавьте карту сайта в Вебмастер и Search Console и сравните число отправленных и проиндексированных адресов.
  • Договоритесь с разработчиками, что изменения robots.txt проходят проверку перед каждым релизом, а тестовые стенды закрыты паролем, а не только запретом обхода.
Поделиться:
Telegram MAX ВКонтакте WhatsApp Одноклассники