Как убрать из XML sitemap WordPress страницы в переадресации

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

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

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

Не каждый редирект в sitemap критичен, но есть несколько признаков, что карту сайта нужно чистить:

  • в sitemap есть URL, которые в браузере сразу отдают 301/302;
  • в Search Console растет число «Страница с переадресацией»;
  • после миграции сайта поисковик долго держит старые адреса в обходе;
  • в sitemap попадают черновики старой структуры, служебные страницы или устаревшие slug;
  • редиректы идут цепочкой: URL из sitemap сначала редиректит, а потом ведет на канонический адрес.

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

Начните не с кода, а с диагностики. Откройте сам sitemap и проверьте несколько URL вручную:

  1. ответ сервера через curl -I https://example.com/old-url/;
  2. наличие URL в sitemap.xml или в дочернем sitemap;
  3. какой плагин формирует карту сайта;
  4. не остались ли старые записи в индексе после переноса структуры.
curl -I https://example.com/old-url/

Если в ответе видите 301 или 302, а этот адрес все еще присутствует в sitemap, карту нужно править. Если же URL отдает 200, но вы считаете его устаревшим, сначала решите вопрос с каноническим адресом и редиректом, а уже потом исключайте его из sitemap.

Как убрать редиректные URL из sitemap: рабочие варианты

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

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

Вариант 1. Убрать URL через фильтр sitemap

Если у вас используется стандартный XML sitemap WordPress, можно отфильтровать список URL перед выводом. Для этого подходит фильтр wp_sitemaps_posts_query_args — он позволяет изменить запрос к записям, которые попадут в карту сайта.

Например, если старые записи помечены определенным статусом, категорией или пользовательским полем, их можно исключить из выборки:

add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
	if ( 'post' !== $post_type ) {
		return $args;
	}

	$args['post__not_in'] = array( 123, 456 );

	return $args;
}, 10, 2 );

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

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

Часто после миграции или переезда на новый URL-формат старые записи помечают метаполем, например _redirect_to или собственным флагом. Тогда удобнее исключать их из sitemap по мета-значению через pre_get_posts не получится, потому что sitemap формируется отдельным запросом. Здесь проще использовать фильтр wp_sitemaps_posts_query_args и добавить meta_query.

add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
	if ( 'post' !== $post_type ) {
		return $args;
	}

	$args['meta_query'] = array(
		array(
			'key'     => '_exclude_from_sitemap',
			'compare' => 'NOT EXISTS',
		),
	);

	return $args;
}, 10, 2 );

Логика простая: если у записи есть флаг исключения, она не должна попадать в sitemap. Такой подход удобен для редакторов: они могут помечать устаревшие материалы без правки кода.

Вариант 3. Если sitemap делает SEO-плагин

У Yoast SEO и Rank Math логика своя, и стандартные фильтры WordPress могут не сработать. В этом случае сначала ищите штатные настройки исключения записей, рубрик или типов контента из sitemap. Если точечной настройки нет, лучше использовать фильтры самого плагина, а не пытаться «ломать» вывод через буферизацию HTML.

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

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

  1. Соберите список URL, которые отдают 301/302 и попадают в sitemap.
  2. Определите источник sitemap: ядро WordPress или SEO-плагин.
  3. Решите, по какому признаку исключать записи: ID, метаполе, тип записи, статус.
  4. Добавьте код в мини-плагин или functions.php дочерней темы.
  5. Очистите кеш страницы, объекта и CDN, если он есть.
  6. Проверьте sitemap и ответы сервера повторно.

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

Как проверить, что решение сработало

Проверка должна быть не визуальной, а технической. После правки сделайте три вещи:

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

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

curl -I https://example.com/sitemap.xml
curl -I https://example.com/old-url/

Для более точной проверки можно скачать sitemap и прогнать его через поиск по строке:

curl -s https://example.com/sitemap.xml | grep -n "old-url"

Если sitemap индексный и содержит несколько вложенных файлов, проверяйте не только корневой файл, но и дочерние карты.

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

Убирают URL из sitemap, но не настраивают редирект

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

Ставят noindex вместо удаления из sitemap

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

Правят не тот слой

Если sitemap генерирует SEO-плагин, а вы добавили фильтр ядра WordPress, ничего не изменится. Сначала определите источник генерации. Это экономит часы бесполезной отладки.

Забывают про кеш

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

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

Для таких правок лучше использовать мини-плагин или mu-plugin. Это снижает риск потерять код при обновлении темы и упрощает аудит. Если правка делается через functions.php, она должна быть короткой и понятной, без сложной логики и внешних запросов.

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

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

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

Когда лучше не трогать sitemap кодом

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

Иначе вы получите ситуацию, где sitemap выглядит чистым, но новые редиректы продолжают появляться из-за хаотичной структуры записей или неконтролируемых изменений slug.

Как отключить xmlrpc.php в WordPress без поломки синхронизации и внешних сервисов
22.08.2026
Как отключить архивы дат WordPress без поломки SEO
11.09.2026
Как закрыть старые версии записей WordPress от индексации без потери актуальной страницы
01.09.2026
Как отключить архивы авторов в WordPress без потери SEO
28.08.2026
Как отключить XML sitemap для отдельного типа записей WordPress без поломки индексации
25.08.2026