XML Sitemap в WordPress часто становится источником дублей и лишних URL, если на сайте одновременно работают ядро, SEO-плагин и отдельный генератор карт сайта. Самая частая ошибка — отключить один источник и не проверить, какой sitemap реально отдает сайт поисковикам. В итоге в индексацию уезжают старые адреса, 404 или дубли с разными параметрами.
Ниже — рабочая схема: как понять, кто именно генерирует sitemap, как отключить лишнее без потери индексации и как быстро проверить, что поисковые роботы видят только нужную карту сайта.
Когда sitemap нужно отключать, а когда нет
Отключать XML Sitemap имеет смысл не всегда. Если у вас один источник карт сайта и он корректно собирает только нужные типы записей, трогать ничего не нужно. Проблема начинается, когда:
- ядро WordPress генерирует
/wp-sitemap.xml, а SEO-плагин — свой/sitemap_index.xml; - на сайте остались старые карты после миграции с другого плагина;
- в sitemap попадают служебные страницы, архивы, теги без контента или тестовые записи;
- карта сайта отдает 200, но внутри есть URL с редиректами, 404 или canonical на другой адрес.
Если сайт уже отправлен в Google Search Console и Яндекс Вебмастер, отключение нужно делать аккуратно: сначала оставить один рабочий sitemap, затем убрать остальные источники. Иначе можно получить временную просадку в обходе страниц.
Диагностика: какой sitemap сейчас отдает сайт
Перед изменениями проверьте, сколько карт сайта реально доступно. Это можно сделать вручную в браузере и через консоль. Важно не только наличие файла, но и его источник.
Что смотреть в браузере
Откройте по очереди:
/wp-sitemap.xml— это стандартный sitemap ядра WordPress;/sitemap_index.xml— часто его отдает Yoast SEO, Rank Math и похожие плагины;- другие адреса, если раньше использовались отдельные генераторы карт сайта.
Если оба адреса открываются и содержат разные наборы URL, это уже повод оставить только один источник.
Проверка через curl
На сервере или локально можно быстро посмотреть заголовки ответа:
curl -I https://example.com/wp-sitemap.xml
curl -I https://example.com/sitemap_index.xmlИщите статус 200 OK, 301/302 редиректы и признаки того, что один адрес просто перенаправляет на другой. Если sitemap редиректится, это не всегда ошибка, но лучше понимать, кто конечный источник.
Как отключить XML Sitemap в WordPress: рабочие варианты
Выбор зависит от того, чем именно генерируется карта сайта. Универсального переключателя в WordPress нет, поэтому ниже — несколько реальных сценариев.
Вариант 1. Отключить sitemap ядра WordPress
Если у вас уже есть sitemap от SEO-плагина, стандартный sitemap ядра лучше убрать. Для этого можно использовать фильтр wp_sitemaps_enabled в теме или небольшом mu-plugin.
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );Код можно положить в wp-content/mu-plugins/disable-core-sitemap.php. Это удобнее, чем править тему: отключение не потеряется после обновления шаблона.
После этого /wp-sitemap.xml должен отдавать 404 или быть недоступным, а основной sitemap должен остаться только у SEO-плагина.
Вариант 2. Отключить sitemap в SEO-плагине
Если вам нужен именно встроенный sitemap WordPress, а SEO-плагин генерирует дубли, отключайте карту в настройках самого плагина. У разных решений интерфейс отличается, но логика одна: убрать генерацию sitemap и оставить только один источник.
Этот путь безопаснее, чем пытаться глушить URL через rewrite или редиректы. Если плагин умеет отключать sitemap штатно, используйте его настройки, а не костыли.
Вариант 3. Скрыть лишние типы записей и таксономии
Иногда sitemap нужен, но в него попадают ненужные сущности: вложения, теги, архивы авторов, служебные CPT. Тогда отключать всю карту не нужно — достаточно убрать лишние типы через фильтры.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['attachment'] );
unset( $post_types['revision'] );
return $post_types;
} );
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['post_tag'] );
return $taxonomies;
} );Такой подход полезен, если проблема не в самом sitemap, а в его составе. Это особенно актуально для новостных сайтов, где теги и архивы часто разрастаются быстрее контента.
Сравнение подходов: код, настройки, компромисс
| Способ | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
Отключить sitemap ядра через wp_sitemaps_enabled | Есть SEO-плагин со своим sitemap | Просто, надежно, без редиректов | Нужно убедиться, что SEO-плагин реально генерирует карту |
| Отключить sitemap в SEO-плагине | Нужен только стандартный sitemap WordPress | Штатное решение, меньше кода | Зависит от интерфейса конкретного плагина |
| Фильтровать типы записей и таксономии | Карта нужна, но в ней лишние URL | Точный контроль состава sitemap | Требует проверки после каждого изменения структуры сайта |
Пошаговое решение без потери индексации
Если задача — убрать дубли и не просадить обход, действуйте по шагам.
- Проверьте, какие sitemap доступны сейчас.
- Выберите один основной источник: ядро WordPress или SEO-плагин.
- Отключите второй источник штатно или через фильтр.
- Уберите из sitemap лишние типы записей и таксономии.
- Очистите кеш страницы, кеш объекта и CDN, если он есть.
- Проверьте, что старые адреса не отдают 200 с тем же содержимым.
- Обновите sitemap в Search Console и Вебмастере, если это требуется вашей схеме.
Если на сайте стоит кеширующий плагин или серверный кеш, после изменений обязательно сбросьте его. Иначе вы можете видеть старую карту сайта даже после того, как код уже исправлен.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Смотрите на конкретные признаки.
/wp-sitemap.xmlбольше не открывается, если вы отключали sitemap ядра.- Остался только один sitemap-индекс, а не два.
- Внутри sitemap нет 404, редиректов и тестовых URL.
- В Search Console и Вебмастере нет резкого роста ошибок сканирования по старым адресам.
- При запросе страницы sitemap сервер не отдает старый кеш.
Дополнительно можно проверить содержимое через браузер или curl:
curl -s https://example.com/sitemap_index.xml | head -n 20
curl -s https://example.com/wp-sitemap.xml | head -n 20Если вы отключали sitemap ядра, второй запрос должен вернуть ошибку или пустой ответ в зависимости от конфигурации сервера и плагинов.
Частые ошибки и как их исправить
Отключили не тот sitemap
Иногда администратор убирает карту сайта в SEO-плагине, а ядро WordPress продолжает отдавать /wp-sitemap.xml. Внешне кажется, что sitemap отключен, но поисковики все еще видят карту. Решение простое: проверьте оба адреса и отключайте именно тот источник, который реально отвечает.
Остался кеш старой карты
После правок sitemap может продолжать открываться из кеша. Это типично для сайтов с page cache, Redis или CDN. Сбросьте все уровни кеширования и проверьте ответ повторно в режиме инкогнито и через curl.
Редирект вместо отключения
Пытаться «спрятать» sitemap через 301 на главную — плохая идея. Поисковик получает лишний сигнал, а карта сайта остается логически неубранной. Если источник больше не нужен, отключайте его на уровне генерации, а не через редирект.
Удалили sitemap, но не почистили Search Console
Если старый sitemap уже был отправлен в Search Console, он может еще какое-то время висеть в отчетах. Это не всегда ошибка сайта. Главное — чтобы новый sitemap был доступен и содержал актуальные URL.
Безопасность и производительность
Для sitemap важны не только SEO-настройки, но и техническая чистота. Чем меньше лишних URL в карте, тем меньше мусора уходит в обход. Это особенно заметно на больших сайтах с архивами, вложениями и служебными типами записей.
Если вы вносите код, не правьте functions.php на живом сайте без бэкапа. Лучше использовать mu-plugin или отдельный мини-плагин. Так вы не потеряете изменения при обновлении темы и снизите риск случайно сломать фронтенд.
Если нужен более широкий набор инструментов для чистки дублей, служебных ссылок и SEO-мелочей, можно посмотреть на Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже в этом случае сначала проверьте, какой sitemap у вас уже работает, а потом отключайте лишнее.
Практика здесь простая: один источник sitemap, понятный состав URL, проверка после каждого изменения и никаких скрытых редиректов вместо нормального отключения. Именно это обычно убирает дубли и не ломает индексацию.