Ситуация типичная: на сайте уже есть встроенная XML sitemap от WordPress, а сверху её дублирует SEO-плагин или тема. В результате в /sitemap.xml и в дополнительных индексах появляются пересечения, а в Search Console — лишние URL, которые не дают пользы. Если карту нужно убрать, важно не просто выключить генерацию, а сначала понять, кто именно её отдаёт и какие URL поисковик уже успел забрать.
Что именно ломается и как это увидеть
Проблема редко выглядит как явная ошибка. Чаще всего сайт продолжает работать, но в индексе остаются старые карты, а в логике обхода поисковик видит несколько источников одной и той же структуры. Это особенно заметно, если одновременно включены:
- встроенная XML sitemap WordPress;
- карта из SEO-плагина;
- отдельные sitemap для изображений, товаров, таксономий или авторов;
- кэш на уровне сервера, который продолжает отдавать старую версию файла.
Проверка начинается с простого: откройте в браузере /sitemap.xml, /wp-sitemap.xml и sitemap, которые генерирует ваш SEO-плагин. Если в ответе виден XML с разными наборами ссылок, у вас уже не одна карта, а несколько источников. Дальше проверьте заголовки ответа и статус:
curl -I https://example.com/sitemap.xml
curl -I https://example.com/wp-sitemap.xmlЕсли один из адресов отдаёт 200 OK и XML, значит карта активна. Если видите 301 или 302, карта может быть перенаправлена на другой URL, и это тоже нужно учитывать при отключении.
Как выбрать, что отключать: плагин, ядро или редирект
Сначала определите источник. Это важнее, чем сам способ отключения. В WordPress XML sitemap может приходить из ядра, из SEO-плагина или из кода темы/му-плагина. Если отключить не тот слой, вы получите либо пустой результат, либо дублирование продолжится.
| Вариант | Когда подходит | Риск |
|---|---|---|
| Отключить в настройках SEO-плагина | Карта генерируется плагином и есть штатная опция | Низкий, если после этого проверен ответ сервера |
| Отключить встроенную sitemap WordPress | Нужна только карта от SEO-плагина | Средний: можно случайно оставить старый URL в индексе |
| Скрыть через редирект или 404 | Нужно убрать старый адрес, но сохранить новый | Выше: легко сломать доступ поисковика к актуальной карте |
Пошагово: отключаем лишнюю XML sitemap без побочных эффектов
1. Отключите генерацию в том месте, где она включена
Если sitemap создаёт SEO-плагин, сначала используйте его настройки. У большинства плагинов есть отдельный переключатель XML sitemap. Это безопаснее, чем править код, потому что плагин сам уберёт связанные ссылки из своих настроек и внутренних маршрутов.
Если карта идёт из ядра WordPress, её можно отключить через фильтр wp_sitemaps_enabled. Добавьте код в functions.php дочерней темы или, лучше, в mu-plugin:
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );Этот вариант отключает встроенную sitemap WordPress целиком. Используйте его только если вы точно оставляете другую карту, например из SEO-плагина.
2. Уберите старый адрес из кэша и проверьте редиректы
После отключения карта может ещё какое-то время отдаваться из кэша. Очистите:
- кэш плагина;
- серверный кэш, если он есть;
- CDN-кэш;
- объектный кэш, если карта попадала в него через нестандартную логику.
Затем снова проверьте ответ:
curl -I https://example.com/sitemap.xml
curl -I https://example.com/wp-sitemap.xmlЕсли старый адрес должен исчезнуть совсем, допустимы два сценария: 404 Not Found или 301 на актуальную карту. Но не делайте цепочку из нескольких редиректов и не отправляйте sitemap на главную страницу — поисковик воспримет это как ошибку.
3. Обновите robots.txt только если это действительно нужно
Если вы меняете адрес карты, проверьте, не прописан ли старый путь в robots.txt. Сам по себе robots не отключает sitemap, но может продолжать указывать на неактуальный URL. В таком случае поисковик будет регулярно ходить по старому адресу и тратить обход.
В файле должно остаться только то, что реально используется. Например:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap_index.xmlЕсли у вас другая карта, замените адрес на фактический. Не добавляйте несколько строк Sitemap: без необходимости: это допустимо, но только если у вас действительно несколько независимых карт.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Смотрите на три вещи: ответ сервера, содержимое XML и данные в Search Console.
- Адрес старой карты не отдаёт активный XML.
- Новая карта открывается без ошибок и содержит только нужные URL.
- В Search Console старая карта либо удалена, либо помечена как недоступная, а новая — доступна для чтения.
Минимальный чек-лист после внедрения:
- проверить
curl -Iдля старого и нового адреса; - открыть XML в браузере и убедиться, что там нет дубликатов;
- очистить кэш на всех уровнях;
- проверить, не осталась ли ссылка на старую карту в
robots.txt; - посмотреть отчёт по sitemap в Google Search Console.
Если у вас есть доступ к логам, полезно посмотреть, не продолжает ли бот ходить на старый URL. Это помогает понять, что проблема не в WordPress, а в кеше, CDN или внешних ссылках.
Частые ошибки и как их исправить
Отключили карту в плагине, но WordPress всё равно отдаёт XML
Значит, у вас осталась встроенная sitemap ядра. Проверьте адрес /wp-sitemap.xml и отключите её через wp_sitemaps_enabled, если она не нужна.
Старая карта отвечает 200, хотя вы всё выключили
Обычно это кэш или отдельный rewrite-rule на уровне сервера. Сначала очистите кэш, потом проверьте конфигурацию Nginx/Apache и правила редиректов. Если карта генерируется не WordPress, а статическим файлом, отключение в админке ничего не изменит.
После отключения пропали важные URL из индекса
Это бывает, если вы убрали не лишнюю карту, а единственный источник актуальных URL. Восстановите генерацию и проверьте, какие типы записей вообще попадают в sitemap: записи, страницы, рубрики, кастомные типы. Иногда проблема не в самой карте, а в том, что в ней были исключены нужные типы контента.
В robots.txt осталась ссылка на несуществующую sitemap
Поисковик продолжит её запрашивать. Исправьте строку Sitemap: вручную и после этого заново отправьте актуальную карту в Search Console.
Когда лучше не править кодом
Если сайт поддерживает не один разработчик, а карта управляется SEO-плагином, сначала используйте интерфейс плагина. Кодовый фильтр wp_sitemaps_enabled хорош для точечного контроля, но он легко теряется при переносе между окружениями, если его добавили в тему вместо mu-plugin. Для рабочих проектов безопаснее хранить такие вещи в отдельном мини-плагине или mu-plugin, чтобы они не зависели от смены темы.
Если вам нужен более широкий контроль над техническими настройками WordPress — от дублей и мусорных страниц до чистки служебных URL — имеет смысл смотреть в сторону инструментов, которые закрывают это системно, а не точечно. Например, Clearfy Pro часто используют именно для технической гигиены сайта, когда нужно убрать лишнее без ручного ковыряния в каждом файле.
Главный критерий здесь простой: после изменений у поисковика должен остаться один понятный источник sitemap, а не набор старых и новых адресов. Если это условие выполнено, значит отключение прошло корректно.