Ситуация знакомая: сайт уже отдает XML-карту, но в индексе или в панели вебмастера всплывает еще одна. Чаще всего это происходит после установки SEO-плагина, миграции темы или обновления WordPress, когда одновременно работают два генератора sitemap. В итоге поисковик видит лишние URL, а вы получаете путаницу в отчетах и лишнюю нагрузку на сайт.
Ниже разберем, как понять, кто именно генерирует sitemap, как отключить лишний источник и как проверить, что после правки осталась только одна рабочая карта сайта.
Когда проблема действительно в дублирующемся sitemap
Не каждый XML-файл по адресу /sitemap.xml — это ошибка. В WordPress карту сайта может отдавать ядро, SEO-плагин или отдельный плагин для sitemap. Проблема начинается, когда несколько источников пытаются занять один и тот же адрес или когда в индексе оказываются разные версии карты: например, /sitemap_index.xml и /wp-sitemap.xml.
Типичные признаки
- в Search Console видны разные sitemap для одного сайта;
- по адресу
/sitemap.xmlоткрывается не тот файл, который вы ожидаете; - в robots.txt указан один sitemap, а фактически работает другой;
- после обновления плагина карта стала генерироваться дважды или начала отдавать 404;
- серверный лог показывает лишние обращения к нескольким sitemap-URL.
Что проверить в первую очередь
- Откройте сайт в браузере и проверьте
/wp-sitemap.xml,/sitemap.xmlи/sitemap_index.xml. - Посмотрите, какой SEO-плагин установлен и не включает ли он собственный sitemap.
- Проверьте
robots.txtна строкуSitemap:. - Если есть кэш-плагин или серверный кэш, очистите его перед тестом.
Как найти источник генерации sitemap
В WordPress встроенная карта сайта появилась в ядре, начиная с версии 5.5. Если при этом у вас работает Yoast SEO, Rank Math, All in One SEO или другой SEO-плагин, он может подменять или дополнять штатный механизм. Отсюда и дубли.
Самый надежный способ диагностики — временно отключить генерацию в одном из слоев и проверить ответ сервера. Если вы не хотите трогать продакшн вручную, сначала сделайте это на staging-копии.
Проверка через браузер и curl
curl -I https://example.com/wp-sitemap.xml
curl -I https://example.com/sitemap.xml
curl -I https://example.com/sitemap_index.xmlСмотрите не только код ответа, но и заголовок Content-Type. Для XML-карты он обычно должен быть application/xml или близким к нему значением. Если один адрес отдает HTML-страницу, редирект или 404, это уже подсказка, где конфликт.
Пошаговое решение: оставить один sitemap и убрать лишний
Есть два рабочих сценария: либо вы оставляете встроенную карту WordPress, либо отдаете sitemap на стороне SEO-плагина. Одновременно держать оба варианта обычно не нужно.
Вариант 1. Оставить встроенный sitemap WordPress
Этот вариант подходит, если у вас нет необходимости в расширенной логике SEO-плагина. Тогда нужно отключить sitemap именно в плагине, а не в ядре.
Например, в Yoast SEO отключение XML-карты делается через фильтр:
add_filter( 'wpseo_enable_xml_sitemap', '__return_false' );Код можно добавить в functions.php дочерней темы или в небольшой mu-plugin. После этого проверьте, что /wp-sitemap.xml отвечает, а /sitemap_index.xml больше не используется.
Вариант 2. Оставить sitemap от SEO-плагина
Если вы уже используете sitemap-индекс от SEO-плагина и он вам нужен, отключите встроенную карту WordPress. Для этого подойдет штатный фильтр ядра:
add_filter( 'wp_sitemaps_enabled', '__return_false' );После этого WordPress перестанет отдавать /wp-sitemap.xml. Важно: если у вас в robots.txt вручную прописан этот адрес, строку нужно убрать или заменить на актуальный sitemap.
Если sitemap генерирует отдельный плагин
У некоторых сайтов стоит отдельный плагин для sitemap, а SEO-плагин при этом тоже включает свою карту. В таком случае отключайте именно лишний источник в настройках плагина. Если настройка отсутствует, лучше удалить плагин, чем держать два конкурирующих генератора.
| Подход | Что оставить | Плюс | Минус |
|---|---|---|---|
| Код | Встроенный sitemap WordPress | Меньше зависимостей | Меньше гибкости по настройкам |
| Плагин | Sitemap от SEO-плагина | Удобнее управлять исключениями | Нужно следить за конфликтами |
| Компромисс | Один источник + кэш | Стабильнее на больших сайтах | Требует аккуратной настройки |
Диагностика через код: как понять, что именно отключать
Если вы не уверены, какой слой отвечает за sitemap, можно быстро проверить наличие фильтров и активных плагинов. Для этого не нужен сложный дебаг — достаточно посмотреть, какие SEO-решения стоят на сайте и какой URL реально отдается.
if ( function_exists( 'wp_sitemaps_get_server' ) ) {
$server = wp_sitemaps_get_server();
if ( $server ) {
error_log( 'WP sitemap server is available' );
}
}Этот фрагмент не отключает sitemap, а помогает убедиться, что ядро WordPress вообще готово его отдавать. Если при этом /wp-sitemap.xml не открывается, значит, его уже кто-то отключил фильтром или перехватил на уровне плагина/сервера.
Проверка результата после внедрения
После отключения лишнего источника важно не ограничиваться открытием URL в браузере. Проверьте поведение сайта так, как его увидит поисковый робот.
- Откройте нужный sitemap по прямому URL и убедитесь, что он отдает
200 OK. - Проверьте, что второй sitemap теперь отдает
404или не существует вовсе. - Посмотрите robots.txt: там должен быть указан только один актуальный sitemap.
- В Search Console отправьте на переобход только правильный sitemap, а старый удалите из списка, если он там есть.
- Очистите кэш страниц, объектный кэш и CDN, если они используются.
Если сайт большой, полезно дополнительно проверить логи сервера: после правки не должно быть всплеска 404 на старый sitemap-адрес.
Частые ошибки и как их исправить
Отключили не тот sitemap
Часто администратор выключает встроенную карту WordPress, а SEO-плагин при этом тоже отключен. В результате sitemap исчезает полностью. Исправление простое: оставьте только один источник, но убедитесь, что он реально отвечает.
Остался старый адрес в robots.txt
Если в robots.txt прописан Sitemap: https://example.com/wp-sitemap.xml, а вы перешли на /sitemap_index.xml, поисковик будет продолжать ходить по старому адресу. Обновите robots.txt вручную или через настройки SEO-плагина.
Кэш отдает старую версию
После правки sitemap может продолжать открываться по старому адресу из-за кэша на сервере, в плагине или на CDN. В таких случаях сначала очищают кэш, потом проверяют ответ заново.
Редирект вместо нормального отключения
Иногда старый sitemap просто редиректят на новый. Это не всегда ошибка, но если редиректов несколько, робот тратит лишние запросы, а диагностика становится грязной. Лучше оставить один канонический адрес и убрать остальные.
Безопасность и производительность: что не стоит делать
Не отключайте sitemap «на всякий случай», если сайт еще не добавлен в Search Console или если у вас много новых материалов. Для небольших сайтов это может не критично, но для контентных проектов sitemap помогает быстрее находить новые страницы.
Также не стоит держать несколько sitemap-плагинов одновременно. Это не дает пользы, но увеличивает шанс конфликтов после обновлений. Если нужен более аккуратный контроль над SEO-настройками и чисткой технических дублей, имеет смысл использовать один инструмент, а не набор разрозненных плагинов. Например, для части типовых задач по очистке и SEO-настройкам часто берут Clearfy Pro: https://wpshop.ru/plugins/clearfy.
Короткий чек-лист перед публикацией правки
- Проверен реальный URL sitemap на сайте.
- Отключен только один лишний источник генерации.
- robots.txt содержит актуальный sitemap.
- Кэш очищен на всех уровнях.
- В Search Console остался один рабочий sitemap.
- Старые адреса не отдают неожиданный HTML или цепочку редиректов.
Если после всех проверок sitemap открывается стабильно и в отчетах поисковика остался один источник, задача решена. Дальше имеет смысл периодически проверять карту сайта после обновлений WordPress и SEO-плагинов: именно они чаще всего возвращают конфликт обратно.