Как убрать 404-страницы из XML sitemap в WordPress

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

Ниже разберём, где именно искать источник, как убрать 404 из sitemap без ручной правки каждого файла и как проверить, что после изменений карта сайта действительно стала чище.

Как понять, откуда берутся 404 в sitemap

Сначала важно не лечить симптом. В WordPress 404-URL в sitemap обычно появляются из трёх мест: из записей и страниц, которые были удалены, из таксономий с пустыми архивами, либо из плагина, который строит sitemap на основе некорректного набора объектов. Если у вас подключён SEO-плагин, он может брать данные из базы и не учитывать, что часть URL уже недоступна.

Проверьте несколько типичных сценариев:

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

Быстрая диагностика

Откройте сам sitemap и найдите проблемный URL. Затем проверьте его статус кодом ответа сервера. Если URL уже отдаёт 404, но всё ещё присутствует в sitemap, значит источник генерации не синхронизирован с фактическим состоянием сайта.

curl -I https://example.com/sitemap_index.xml
curl -I https://example.com/udalennaya-stranica/

Если sitemap индексируется через SEO-плагин, проверьте его настройки: иногда отдельно включены архивы, медиа, авторы, теги или пользовательские типы записей. Именно они чаще всего создают мусорные URL, которые потом приходится вычищать вручную.

Что делать в первую очередь

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

Для WordPress-проектов с SEO-плагином обычно хватает трёх шагов:

  1. найти тип контента, который даёт 404;
  2. исключить его из генерации sitemap;
  3. очистить кеш и пересобрать карту сайта.

Если sitemap генерирует SEO-плагин

В большинстве случаев удобнее отключать проблемные типы контента в настройках плагина, чем пытаться фильтровать готовый XML. Например, если в карту сайта попадают вложения, которые не нужны в поиске, их лучше исключить на уровне настроек. Это снижает риск случайно сломать формат sitemap.

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

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 записей, которые не должны попадать в sitemap. Но если 404 создаются массово, лучше искать причину в шаблонах, таксономиях или импорте данных.

Как убрать конкретные 404 URL из sitemap кодом

Иногда проблема не в типе контента, а в том, что sitemap строится из набора URL, часть которых уже недоступна. Тогда можно отфильтровать список перед выводом. Для стандартного sitemap WordPress есть фильтр wp_sitemaps_posts_query_args, а для отдельных сценариев полезно работать через pre_get_posts или исключение записей из конкретного типа.

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

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    if ( isset( $post_types['attachment'] ) ) {
        unset( $post_types['attachment'] );
    }

    return $post_types;
} );

Этот пример отключает вложения из sitemap WordPress. Он уместен, если медиа-страницы не нужны в поиске и именно они создают мусорные URL. Перед применением проверьте, не завязаны ли на эти страницы внутренние ссылки или внешние переходы.

Сравнение подходов: плагин, код, ручная правка

ПодходКогда подходитМинус
Настройки SEO-плагинаНужно быстро убрать типы контента или архивыНе всегда решает точечные 404
Код в functions.php или mu-pluginНужен контроль над конкретными URL и типами записейТребует аккуратного тестирования
Ручная правка sitemapТолько разовая аварийная ситуацияСломается после следующей генерации

Если сайт живой и sitemap пересобирается автоматически, ручная правка почти всегда бессмысленна. Через день или после очистки кеша проблема вернётся. Поэтому рабочий вариант — либо настройка генератора, либо фильтр на уровне темы/плагина.

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

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

  • очистите кеш плагина, сервера и CDN, если он есть;
  • откройте /sitemap_index.xml и проверьте, что проблемный URL больше не присутствует;
  • снова выполните curl -I для sitemap и целевого URL;
  • в Google Search Console отправьте sitemap на повторную обработку, если он уже был добавлен;
  • проверьте, не остались ли внутренние ссылки на удалённую страницу.

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

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

Отключили не тот тип контента

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

Очистили только кеш страницы, но не кеш sitemap

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

Сделали 301 на нерелевантную страницу

Редирект на главную или случайную категорию часто ухудшает качество сайта. Если у удалённой страницы нет замены, лучше вернуть 410 Gone, чем отправлять поисковик по кругу.

Правят XML вручную

Это временная мера, которая ломается при следующей генерации. Если sitemap создаёт плагин или ядро WordPress, исправление должно быть на уровне источника данных.

Что проверить в плане безопасности и производительности

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

Если вы регулярно чистите сайт от дублей и технического мусора, имеет смысл использовать инструменты, которые помогают управлять индексируемыми архивами, дублями и служебными страницами. В экосистеме WPShop для этого часто используют Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином базовая логика остаётся той же: сначала находите источник URL, потом убираете его из генерации sitemap.

Мини-чек-лист перед публикацией изменений

  • Проблемный URL определён и проверен кодом ответа.
  • Источник 404 найден: запись, таксономия, вложение или кеш.
  • URL исключён из sitemap на уровне настроек или кода.
  • Кеш sitemap и серверный кеш очищены.
  • Проверка через браузер и curl -I показывает актуальный результат.
  • Внутренние ссылки на удалённый URL либо удалены, либо заменены.

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

Как убрать 404-страницы из XML sitemap в WordPress
03.09.2026
Как закрыть от индексации страницы автора, архивы и теги в WordPress
31.08.2026