XML sitemap сам по себе не должен ранжироваться как обычная страница, но на практике его иногда находят в индексе, особенно если карта сайта открыта по прямой ссылке, попала в старые ссылки или была ошибочно добавлена в sitemap index как отдельный URL. Для WordPress это обычно не критично, но шум в индексе мешает диагностике: в отчётах Search Console появляются лишние URL, а в логике аудита сайта карта сайта выглядит как «страница», хотя ей там не место.
Ниже — рабочий сценарий: как понять, что именно индексируется, чем закрывать sitemap от индексации и где не переборщить, чтобы не сломать поиск и обход страниц.
Когда проблема действительно есть
Сначала стоит проверить, что именно попало в индекс. Не путайте три разных ситуации: карта сайта доступна по URL, карта сайта отдается с кодом 200, и карта сайта действительно находится в индексе. Последнее важнее всего.
Что проверить в первую очередь
- Откройте sitemap вручную:
/sitemap.xml,/wp-sitemap.xmlили sitemap от SEO-плагина. - Проверьте ответ сервера через DevTools или
curl -I https://example.com/sitemap.xml. - Посмотрите, есть ли этот URL в Google Search Console в разделе «Страницы» или через поиск
site:example.com sitemap. - Убедитесь, что в robots.txt sitemap не закрыт случайно вместе с важными разделами.
Если карта сайта просто доступна, это нормально. Если она индексируется как страница, обычно проблема в заголовках ответа, в настройках SEO-плагина или в том, что sitemap отдаётся не тем типом содержимого.
Диагностика: почему sitemap попадает в индекс
В WordPress sitemap может генерироваться ядром, SEO-плагином или кастомным кодом темы/плагина. Из-за этого и способы исправления отличаются. Самая частая ошибка — пытаться закрыть sitemap через noindex в robots.txt. Robots.txt не умеет запрещать индексацию уже найденного URL, он только ограничивает обход.
Проверьте источник sitemap
Если у вас включён встроенный sitemap WordPress, он обычно доступен по /wp-sitemap.xml. Если установлен SEO-плагин, он может подменять стандартный sitemap своим. Это важно: править нужно тот источник, который реально отвечает на запрос.
| Подход | Когда подходит | Компромисс |
|---|---|---|
| Настройки SEO-плагина | Если sitemap генерирует плагин | Зависите от интерфейса и версии плагина |
| Код в теме или mu-plugin | Если нужен точечный контроль | Нужно аккуратно поддерживать при обновлениях |
| robots.txt | Чтобы ограничить обход | Не решает проблему индексации сам по себе |
Пошаговое решение
1. Убедитесь, что sitemap отдаёт правильный тип ответа
Карта сайта должна отдавать XML, а не HTML-страницу темы, не редирект на 404 и не кастомную страницу ошибки. Если сервер или плагин подменяет ответ, поисковик может воспринимать URL как обычный документ.
curl -I https://example.com/wp-sitemap.xmlВ ответе ожидайте 200 OK и Content-Type, близкий к application/xml или text/xml. Если вместо этого видите text/html, сначала чините генерацию sitemap, а не индексацию.
2. Добавьте заголовок noindex для sitemap
Если sitemap отдаётся отдельным URL, самый надёжный способ — отправить для него заголовок X-Robots-Tag: noindex. Это работает и для XML, и для файлов, где нельзя вставить обычный meta robots.
Пример для functions.php или, лучше, для небольшого mu-plugin:
<?php
add_action('template_redirect', function () {
$uri = $_SERVER['REQUEST_URI'] ?? '';
if (strpos($uri, 'sitemap.xml') !== false || strpos($uri, 'wp-sitemap.xml') !== false) {
header('X-Robots-Tag: noindex, follow', true);
}
});Это грубый, но рабочий вариант для простых установок. Если sitemap генерирует SEO-плагин, лучше использовать его штатные настройки или фильтры, чтобы не ловить побочные эффекты на других XML-эндпоинтах.
3. Если используете SEO-плагин, проверьте его настройки sitemap
У большинства SEO-плагинов есть отдельные настройки XML sitemap. Там можно отключить лишние типы контента, таксономии и архивы, которые не должны попадать в карту сайта. Это не то же самое, что запретить индексацию sitemap, но часто именно здесь начинается путаница: в индекс попадает не сама карта, а её содержимое.
Если вам нужен более жёсткий контроль над дублями, служебными страницами и технической чисткой, имеет смысл смотреть в сторону инструментов, которые умеют управлять индексируемостью и лишними элементами сайта на уровне настроек, а не вручную в коде. Например, у Clearfy Pro есть набор функций для технической оптимизации и удаления дублей, но применять его стоит только если вы понимаете, что именно отключаете.
4. Закройте sitemap от обхода в robots.txt, если это нужно
Это не основной шаг, а дополнительный. Он полезен, если вы хотите снизить частоту обхода служебного URL. Но не рассчитывайте, что одна строка в robots.txt уберёт уже проиндексированный sitemap.
User-agent: *
Disallow: /wp-sitemap.xml
Disallow: /sitemap.xmlЕсли sitemap нужен поисковику для обнаружения страниц, не закрывайте его бездумно. Для обычного сайта лучше оставить sitemap доступным, а от индексации закрыть только заголовком X-Robots-Tag.
Как проверить результат после внедрения
После изменений не ограничивайтесь визуальной проверкой в браузере. Браузер покажет только содержимое, а вам нужен именно ответ сервера и статус индексации.
- Проверьте заголовки:
curl -I https://example.com/wp-sitemap.xml. - Убедитесь, что появился
X-Robots-Tag: noindex. - Откройте URL в Search Console и запросите повторную проверку, если он уже был в индексе.
- Посмотрите, не исчез ли sitemap из результатов
site:через несколько обходов.
Если URL всё ещё в индексе, это не всегда означает, что настройка не сработала. Поисковику нужно время, чтобы переобойти страницу и обновить статус. Но если заголовок не отдается вообще, значит код не попал в нужный хук или sitemap генерируется другим компонентом.
Частые ошибки и как их исправить
Путают robots.txt и noindex
Это самая частая ошибка. Disallow в robots.txt запрещает обход, но не гарантирует удаление из индекса. Для уже известного URL нужен noindex через заголовок или HTML-мета-тег, если это обычная страница.
Ставят noindex на весь сайт
Иногда в попытке убрать sitemap закрывают всё подряд через глобальные настройки. В результате поисковик теряет доступ к нормальным страницам. Проверяйте, что правило применяется только к sitemap-URL.
Правят не тот sitemap
На сайте может быть и /wp-sitemap.xml, и sitemap от плагина, и старый остаток от предыдущей миграции. Если в индексе один URL, а вы правите другой, эффект будет нулевой. Сначала найдите фактический адрес в Search Console и в логах сервера.
Сломали XML ответ HTML-шаблоном
Если тема или плагин вмешались в вывод и sitemap начал отдавать HTML, поисковик может воспринимать его как обычную страницу. В таком случае проверьте, нет ли лишнего echo, BOM в PHP-файлах, нестандартных буферизаций и редиректов.
Безопасность и производительность
Не стоит вешать тяжёлую логику на каждый запрос ради одного sitemap. Если делаете кастомное решение, ограничьте его точным условием по URI и не запускайте лишние запросы к базе. Для небольших сайтов это не критично, но на нагруженных установках лишний код в template_redirect быстро становится заметным.
Если у вас много технических задач вокруг индексации, дублей и служебных страниц, лучше держать такие правки в отдельном mu-plugin. Тогда они не потеряются при обновлении темы и не зависят от визуального шаблона.
Практический чек-лист
- Определить, какой sitemap реально используется на сайте.
- Проверить HTTP-ответ и тип содержимого.
- Добавить
X-Robots-Tag: noindexтолько для sitemap-URL. - При необходимости ограничить обход в robots.txt.
- Проверить статус URL в Search Console после переобхода.
- Убедиться, что не пострадали обычные страницы и другие XML-эндпоинты.
Если задача шире и вам нужно не только закрыть sitemap, но и навести порядок в технической индексации сайта, удобнее решать это системно: убрать дубли, лишние архивы и служебные URL, а не точечно тушить симптомы. В таких сценариях полезно смотреть на инструменты уровня Clearfy Pro, но только как на средство для конкретной технической задачи, а не как на замену диагностике.