Как отключить открытые XML Sitemap в WordPress и закрыть лишние URL от индексации

Ситуация типовая: сайт уже живет, а в индексе начинают всплывать URL, которые вы не планировали показывать поисковикам. Чаще всего проблема не в robots.txt, а в том, что XML Sitemap отдает слишком много адресов: архивы, служебные страницы, вложения, тестовые записи, дубли таксономий или URL, которые должны были быть закрыты еще на этапе настройки темы и плагинов.

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

Когда проблема действительно в sitemap

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

Признаки, что нужно править именно XML Sitemap

  • в sitemap.xml есть URL архивов, вложений или параметрических страниц;
  • в Search Console появляются страницы, которых нет в меню и которые не должны индексироваться;
  • после удаления контента URL продолжает приходить в обход через карту сайта;
  • плагин SEO или тема генерируют отдельные sitemap для типов записей, которые вы не используете;
  • в карте сайта есть записи с noindex, но они все равно отдаются в XML.

Диагностика: что именно отдает карту сайта

В WordPress sitemap может генерировать сам движок, SEO-плагин или код темы/кастомного плагина. Начинать лучше с простого: откройте /sitemap.xml и посмотрите, что там реально лежит. Если используется Yoast SEO, Rank Math или другой SEO-плагин, карта сайта часто собирается не ядром, а их обработчиками. Это важно, потому что правка в robots.txt тут не решает проблему — URL все равно остаются доступны по прямой ссылке.

Проверьте три вещи:

  1. какие sitemap-файлы существуют и какие типы контента они содержат;
  2. есть ли в них записи, которые вы хотите скрыть;
  3. не генерируются ли отдельные sitemap для медиафайлов, авторов, таксономий или пользовательских типов записей.

Если у вас есть доступ к серверу, можно быстро проверить ответ заголовками и содержимым:

curl -I https://example.com/sitemap.xml
curl -s https://example.com/sitemap.xml | head -n 20

Если в ответе есть редирект на другой sitemap, проверьте уже конечный URL. Иногда проблема сидит не в главной карте сайта, а в одном из вложенных файлов.

Как отключить лишние URL в sitemap: рабочие варианты

Тут есть три нормальных пути: настройка через SEO-плагин, фильтрация через код и отключение конкретных типов контента из генерации. Выбор зависит от того, где именно формируется карта сайта.

ПодходКогда использоватьПлюсМинус
Настройки SEO-плагинаЕсли sitemap собирает Yoast SEO, Rank Math или аналогБез кода, проще поддерживатьНе всегда можно убрать точечно
Фильтр в functions.php или мини-плагинеЕсли нужен точный контроль над URLМожно убрать конкретные типы и записиНужна аккуратность и тестирование
Отключение генерации для типа записиЕсли контент не должен индексироваться вообщеЧистое решение на уровне модели контентаМожет затронуть внутренние ссылки и поиск

Вариант 1. Убрать тип записи из sitemap через код

Если у вас есть пользовательский тип записи, который не должен попадать в XML Sitemap, его можно исключить через фильтр wp_sitemaps_post_types. Это работает в ядре WordPress, если sitemap генерирует именно оно.

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['event'] );
    unset( $post_types['landing'] );

    return $post_types;
} );

Такой код лучше класть не в тему, а в небольшой mu-plugin или в собственный плагин. Тогда он не исчезнет при смене темы.

Вариант 2. Исключить отдельные записи по ID

Если проблема не в типе записи, а в нескольких конкретных страницах, используйте фильтр wp_sitemaps_posts_query_args. Он позволяет убрать нужные ID из выборки.

<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'post' === $post_type ) {
        $args['post__not_in'] = array( 123, 456 );
    }

    return $args;
}, 10, 2 );

Это полезно, когда у вас есть служебные записи, которые должны оставаться в админке, но не должны светиться в карте сайта. После изменения обязательно проверьте, что ID действительно исчезли из XML, а не только из выдачи в админке.

Вариант 3. Отключить sitemap для медиа-вложений

Вложенные медиафайлы часто создают лишний шум. Если у вас отдельные страницы attachment не нужны, их лучше не только закрыть от индексации, но и убрать из sitemap. Для ядра WordPress можно исключить attachment как тип записи:

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['attachment'] );

    return $post_types;
} );

Если sitemap генерирует SEO-плагин, ищите аналогичную настройку в его интерфейсе. У некоторых плагинов есть отдельный переключатель для медиа или вложений, и это удобнее, чем писать код.

Пошаговая схема внедрения без лишнего риска

  1. Сделайте копию текущего sitemap и сохраните список URL, которые нужно убрать.
  2. Определите, кто генерирует карту сайта: ядро WordPress или SEO-плагин.
  3. Сначала отключите лишнее через настройки плагина, если это возможно.
  4. Если настроек недостаточно, добавьте фильтр в mu-plugin или отдельный мини-плагин.
  5. Очистите кеш сайта, CDN и серверный кеш, если он есть.
  6. Проверьте sitemap в браузере и через curl.
  7. Отправьте обновленный sitemap в Search Console, если используете ее для контроля индексации.

Проверка результата после внедрения

Проверять нужно не только сам XML, но и поведение робота. Минимальный набор проверок такой:

  • открывается ли /sitemap.xml без ошибок;
  • исчезли ли из карты сайта нужные URL;
  • не сломались ли ссылки на вложенные sitemap-файлы;
  • не появились ли пустые sitemap для отключенных типов;
  • не отдает ли сервер старую версию XML из кеша.

Для быстрой технической проверки удобно сравнить ответ до и после:

curl -s https://example.com/sitemap.xml | grep -E 'post|page|attachment|event'

curl -s https://example.com/wp-sitemap-posts-post-1.xml | head -n 30

Если URL все еще видны, но вы уже убрали их из настроек, почти всегда виноват кеш. В этом случае очищайте не только плагин кеширования, но и объектный кеш, если он подключен, а также CDN.

Частые ошибки и как их исправить

Отключили sitemap в robots.txt, но URL остались доступны

Это распространенная путаница. Robots.txt не удаляет URL из карты сайта и не закрывает уже известные поисковику страницы. Он только ограничивает обход. Если URL уже есть в sitemap, сначала уберите их оттуда, а потом решайте вопрос с индексацией на уровне noindex или редиректа.

Скрыли страницу, но забыли про внутренние ссылки

Даже если URL исчез из sitemap, он может продолжать обходиться через меню, хлебные крошки, блоки похожих записей или виджеты. Проверьте шаблоны темы и настройки SEO-блоков. Иначе поисковик продолжит находить адрес через внутренние переходы.

Правили functions.php, а после обновления тема все потеряла

Это классическая ошибка. Для технических правок, связанных с индексацией, лучше использовать mu-plugin или отдельный мини-плагин. Так вы не привязываете критичную логику к теме оформления.

Сломали sitemap для всех типов записей

Иногда разработчик слишком агрессивно фильтрует массив типов и случайно убирает из карты сайта и нужные разделы. Перед выкладкой проверьте, что в XML остались все страницы, которые должны индексироваться: записи, важные страницы, категории или другие целевые типы контента.

Практические советы по безопасности и производительности

Если sitemap большой, не гоняйте его через тяжелые запросы на каждом хите. Не добавляйте в фильтры сложные выборки с мета-запросами без необходимости. Карта сайта должна собираться быстро и предсказуемо. Для точечных исключений достаточно ID и типов записей.

Если у вас много кастомной логики вокруг индексации, держите ее отдельно от темы. Это упростит аудит и снизит риск того, что после редизайна сайт внезапно начнет отдавать лишние URL в sitemap. Для сайтов, где нужен более широкий контроль над дублями и технической чисткой, иногда удобнее использовать специализированный инструмент вроде Clearfy Pro: он закрывает часть типовых задач по SEO и чистке сайта, но все равно требует проверки на конкретном проекте.

И еще один практический момент: после любых изменений в sitemap не ориентируйтесь только на браузер. Проверяйте исходный XML, ответ сервера и кеширующие слои. Именно там чаще всего и прячется причина, почему «вроде все исправили», а в индексе ничего не меняется.

Как отключить архив авторов в WordPress без потери индексации и дублей
20.09.2026
Как отключить XML-RPC в WordPress без поломки внешних сервисов
16.09.2026
Как найти и убрать дубли страниц в WordPress через canonical и 301 редиректы
23.09.2026
Как настроить robots.txt в WordPress для закрытия технических страниц
27.09.2026
Как отключить открытые XML Sitemap в WordPress и закрыть лишние URL от индексации
01.10.2026