С XML-картой сайта в WordPress часто путают две разные задачи: не дать поисковику индексировать сам файл sitemap и не дать ему использовать ссылки из карты для обхода сайта. На практике обычно нужен не запрет индексации sitemap как документа, а корректная настройка robots.txt и проверка того, что карта сайта не создает лишних дублей и не светится в поиске как отдельная страница.
Если у вас в выдаче всплывает /sitemap.xml, /post-sitemap.xml или карта сайта от SEO-плагина, это не всегда проблема. Но если sitemap индексируется как отдельный URL, а в robots.txt есть конфликтующие правила, лучше привести конфигурацию в порядок. Ниже — рабочий сценарий для WordPress без выдуманных хуков и без опасных правок ядра.
Когда sitemap вообще нужно ограничивать
Сама по себе XML-карта сайта не должна ранжироваться как полезная страница для пользователя. Поисковики обычно воспринимают ее как технический файл. Проблемы начинаются, когда:
- в robots.txt случайно закрыт доступ к самой карте сайта;
- в CMS или плагине генерируется несколько карт, и часть из них отдает 200 OK, но не нужна для обхода;
- в поиске индексируется не sitemap, а HTML-страница с тем же URL после конфликта маршрутизации;
- на сайте есть старые карты сайта от плагина, который уже удален, но URL остались доступны.
Если задача именно в том, чтобы убрать sitemap из индекса, сначала проверьте, не является ли это следствием более общей ошибки: дублирующегося robots.txt, неверного canonical или старого кэша на уровне CDN.
Диагностика: что именно не так с sitemap
Начните с трех проверок. Они занимают несколько минут и сразу показывают, где проблема.
1. Проверить ответ сервера
Откройте карту сайта в браузере и посмотрите код ответа. Для XML sitemap нормален 200 OK. Если вместо XML вы видите HTML-страницу, редирект или ошибку, сначала чините это, а не robots.txt.
curl -I https://example.com/sitemap.xmlСмотрите на:
HTTP/2 200илиHTTP/1.1 200 OK;content-type: application/xmlили похожий XML-тип;- отсутствие лишних редиректов.
2. Проверить robots.txt
Откройте /robots.txt и убедитесь, что там нет запрета на сам sitemap. Частая ошибка — закрыть / или каталог, в котором лежит карта, а потом удивляться, что поисковик не может ее прочитать.
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap_index.xmlЕсли у вас Yoast SEO, Rank Math или другой SEO-плагин, он обычно сам добавляет строку Sitemap:. Ручная правка нужна только если плагин не справляется или robots.txt формируется сторонним кешем.
3. Проверить, что именно попало в индекс
Иногда в индексе оказывается не XML, а старая HTML-страница с похожим URL. Проверьте запросом вида site:example.com sitemap и в Search Console посмотрите, какой именно адрес найден. Это важно: для XML-файла и для HTML-страницы решения будут разными.
Рабочие варианты решения
Ниже — три подхода. Выбор зависит от того, кто у вас генерирует sitemap и насколько жестко вы хотите управлять доступом.
| Вариант | Что делает | Когда подходит | Компромисс |
|---|---|---|---|
| Через SEO-плагин | Меняет sitemap и robots.txt из админки | Если sitemap генерирует Yoast SEO, Rank Math или аналог | Зависимость от логики плагина |
| Через код | Добавляет/меняет правила robots.txt | Если нужен точечный контроль | Нужно следить за обновлениями темы и плагинов |
| Через сервер | Ограничивает доступ на уровне nginx/apache | Если нужно закрыть старый файл или нестандартный URL | Можно случайно сломать доступ поисковикам |
Вариант 1. Исправить robots.txt через WordPress
Если вам нужно добавить строку с картой сайта или убрать конфликтующее правило, можно использовать фильтр robots_txt. Это штатный способ WordPress, без правки файлов ядра.
<?php
add_filter( 'robots_txt', function( $output, $public ) {
$lines = array(
'User-agent: *',
'Disallow: /wp-admin/',
'Allow: /wp-admin/admin-ajax.php',
'Sitemap: https://example.com/sitemap_index.xml',
);
return implode( "\n", $lines ) . "\n";
}, 10, 2 );Этот код уместен, если вы хотите централизованно контролировать robots.txt из темы или небольшого mu-plugin. Но если SEO-плагин уже генерирует robots.txt, не дублируйте правила без необходимости: сначала проверьте, нет ли у него собственного поля для sitemap.
Вариант 2. Убрать sitemap из индекса через заголовки или запрет доступа
Если проблема в том, что сам XML-файл индексируется как отдельный URL, а вам нужно именно исключить его из поиска, одного robots.txt может быть недостаточно. Для уже проиндексированного URL обычно используют удаление через Search Console и затем оставляют файл доступным для обхода. Полностью закрывать sitemap от робота не стоит, если вы хотите, чтобы он продолжал использовать карту для обхода сайта.
То есть практический сценарий такой: не закрывать sitemap от чтения, а убрать его из результатов поиска. Для этого:
- проверьте, что sitemap отдает XML и 200 OK;
- убедитесь, что на URL нет HTML-оболочки;
- в Search Console отправьте запрос на удаление устаревшего URL, если он уже в индексе;
- не ставьте
Disallowна сам sitemap, если хотите сохранить его пользу для обхода.
Вариант 3. Отключить лишние карты сайта в SEO-плагине
Если у вас несколько типов контента, часть карт может быть не нужна. Например, на сайте без медиа-архива не имеет смысла держать отдельную карту для attachment-страниц, если они отключены или закрыты. В Yoast SEO и Rank Math это обычно настраивается в интерфейсе, без кода.
Смысл здесь не в том, чтобы «спрятать sitemap», а в том, чтобы не генерировать лишние URL, которые потом приходится чистить из индекса. Это особенно полезно на старых сайтах, где накопились архивы, вложения и таксономии без ценности для поиска.
Пошаговая настройка без лишнего риска
- Определите, кто генерирует sitemap: WordPress core, SEO-плагин или кастомный код.
- Проверьте, какой URL реально открывается:
/sitemap.xml,/sitemap_index.xmlили набор вложенных карт. - Убедитесь, что robots.txt не блокирует сам sitemap.
- Если sitemap уже в индексе, не закрывайте его от робота полностью — сначала удалите URL из выдачи через Search Console.
- Удалите старые карты сайта, если они остались после миграции плагина.
- Очистите серверный кеш, кеш плагина и CDN.
Как проверить, что решение сработало
После правок не ограничивайтесь визуальной проверкой в браузере. Нужны три контрольные точки:
- robots.txt открывается без ошибок и содержит актуальную строку
Sitemap:; - sitemap.xml отдает XML, а не HTML и не редиректится по цепочке;
- Search Console показывает, что карта сайта доступна, а проблемный URL не получает новые ошибки обхода.
Для быстрой проверки можно снова использовать curl:
curl -I https://example.com/robots.txt
curl -I https://example.com/sitemap_index.xmlЕсли после очистки кеша старый sitemap все еще виден в выдаче, подождите переобхода и проверьте, не отдает ли CDN старую версию файла. На практике это одна из самых частых причин «я все исправил, а в поиске ничего не поменялось».
Частые ошибки и как их исправить
Закрыли sitemap в robots.txt
Это самая вредная ошибка. Поисковик перестает использовать карту для обхода, а вы теряете контроль над тем, как он видит сайт. Если цель — убрать URL из выдачи, используйте удаление из индекса, а не полный запрет доступа к sitemap.
Оставили старый sitemap после смены плагина
После перехода с одного SEO-плагина на другой старый адрес карты может продолжать отдавать 200 OK или редиректить на неактуальный файл. Проверьте старые URL вручную и удалите лишние правила на сервере, если они остались.
Смешали XML sitemap и HTML-страницу с тем же адресом
Так бывает при конфликте rewrite-правил или кастомных шаблонов. В этом случае поисковик может индексировать не карту сайта, а обычную страницу. Решение — проверить правила пермалинков, отключить конфликтующий шаблон и убедиться, что URL отдает именно XML.
Не очистили кеш после правок
Если у вас включены кеш плагина, серверный кеш или CDN, robots.txt и sitemap могут обновиться не сразу. После изменений всегда очищайте все уровни кеширования, иначе диагностика будет врать.
Безопасность и производительность
Для sitemap важны не только SEO-настройки, но и стабильность генерации. Если карта строится динамически, она должна быть легкой и предсказуемой. Не стоит добавлять в sitemap мусорные URL, временные страницы, тестовые записи и вложения без смысла.
Если вам нужен более широкий контроль над технической чисткой сайта, можно посмотреть в сторону Clearfy Pro: он помогает управлять частью SEO- и технических настроек без ручного ковыряния в коде. Но даже с плагином полезно понимать, какие URL реально отдаются и что именно видит поисковик.
Из практики: чем меньше лишних карт и дублей генерирует сайт, тем проще потом разбирать индексацию. Поэтому лучше один раз проверить структуру sitemap и robots.txt, чем потом чистить выдачу по кускам.