Если в XML sitemap попадают дубли, поисковик тратит краулинговый бюджет на лишние URL и дольше добирается до важных страниц. На практике это часто не одна проблема, а набор мелочей: в карту сайта попадают архивы тегов, страницы пагинации, вложения, служебные таксономии или дубли из плагина SEO и темы одновременно.
Ниже разберём, как понять, что именно лишнее в sitemap, как убрать это без поломки индексации и как проверить результат после изменений.
Когда дубли в sitemap действительно проблема
Не каждый лишний URL в карте сайта критичен. Но если sitemap разрастается за счёт страниц, которые не должны получать трафик, это уже повод навести порядок. Особенно это заметно на сайтах с большим количеством тегов, архивов авторов, вложений изображений и страниц пагинации.
Типичные симптомы
- в Search Console в отчёте по sitemap появляются URL, которые вы не хотите индексировать;
- в карте сайта есть страницы
/tag/,/author/,/page/2/и вложения медиа; - одна и та же запись доступна по нескольким адресам, а в sitemap попадает неканонический вариант;
- после установки SEO-плагина sitemap стал включать больше служебных URL, чем раньше.
Диагностика: что именно попало в sitemap
Сначала не трогайте настройки вслепую. Откройте сам sitemap и посмотрите, какие типы URL там перечислены. В зависимости от SEO-плагина это может быть индексный файл sitemap и несколько вложенных карт для записей, страниц, категорий и тегов.
Если у вас установлен Yoast SEO, Rank Math или другой SEO-плагин, проверьте, не формирует ли он sitemap вместе с картой сайта от темы или отдельного плагина. Две карты сайта одновременно часто создают путаницу: одна из них может содержать лишние архивы, а другая — дубли тех же URL.
Быстрая проверка в браузере и через поиск по файлу
Откройте адрес sitemap, например /sitemap_index.xml, и посмотрите список вложенных карт. Если карта большая, скачайте её и найдите повторяющиеся шаблоны URL:
curl -s https://example.com/sitemap_index.xml | grep -Eo 'https?://[^<]+' | headЕсли нужно быстро понять, какие типы URL там есть, удобно выгрузить карту и посмотреть по маскам:
curl -s https://example.com/post-sitemap.xml | grep -Eo '<loc>[^<]+' | sed 's/<loc>//'Для больших сайтов полезно сравнить список URL из sitemap с тем, что реально должно индексироваться: записи, страницы, нужные категории и, если это оправдано, отдельные посадочные страницы.
Как убрать дубли: рабочие варианты
Есть три нормальных подхода: через настройки SEO-плагина, через код и через сочетание обоих способов. Выбор зависит от того, насколько у вас сложная структура сайта.
| Способ | Когда подходит | Минус |
|---|---|---|
| Настройки SEO-плагина | Нужно быстро убрать теги, архивы, вложения | Не всегда хватает гибкости |
| Код в теме или мини-плагине | Нужны точечные исключения по правилам | Требует аккуратного сопровождения |
| Комбинированный подход | Есть и SEO-плагин, и нестандартные типы контента | Нужно следить, чтобы правила не конфликтовали |
Вариант 1. Отключить лишние типы контента в SEO-плагине
Если sitemap генерирует SEO-плагин, начните с его настроек. Обычно можно отключить архивы тегов, авторов, форматы записей, медиа-вложения и отдельные таксономии. Это самый безопасный путь, потому что плагин сам перестроит карту сайта без ручного кода.
Проверьте такие разделы:
- XML sitemap;
- Taxonomies;
- Archives;
- Media / Attachments;
- Post types.
Если на сайте нет смысла индексировать теги или архивы авторов, выключайте их в первую очередь. Но если теги реально используются как посадочные страницы и приносят трафик, не убирайте их автоматически.
Вариант 2. Исключить архивы и вложения кодом
Когда настройками не обойтись, можно исключить лишние типы URL через фильтры WordPress. Ниже пример для стандартного XML sitemap WordPress, если вы используете встроенную карту сайта и хотите убрать вложения из выдачи.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
if ( isset( $post_types['attachment'] ) ) {
unset( $post_types['attachment'] );
}
return $post_types;
} );Этот код убирает вложения из sitemap. Его можно добавить в мини-плагин или в functions.php, но для продакшена лучше отдельный mu-plugin, чтобы правило не потерялось при смене темы.
Если нужно убрать конкретные таксономии, используйте фильтр для taxonomies:
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
foreach ( array( 'post_tag', 'post_format' ) as $taxonomy ) {
if ( isset( $taxonomies[ $taxonomy ] ) ) {
unset( $taxonomies[ $taxonomy ] );
}
}
return $taxonomies;
} );Такой вариант подходит, если вы точно знаете, что теги и форматы записей не должны участвовать в индексации.
Вариант 3. Убрать дубли из sitemap SEO-плагина через фильтр
Если у вас Yoast SEO или Rank Math, не пытайтесь править их файлы напрямую. Используйте фильтры плагина или его настройки. У разных плагинов имена фильтров отличаются, поэтому здесь лучше ориентироваться на документацию конкретного решения. Общий принцип один: отключать ненужные типы контента на уровне конфигурации, а не патчить ядро плагина.
Если у вас уже есть встроенный sitemap WordPress, а SEO-плагин тоже генерирует карту сайта, оставьте только один источник. Два sitemap-сервиса на одном сайте — частая причина дублей и лишних URL в Search Console.
Пошаговое решение без лишнего риска
- Откройте sitemap и выпишите все типы URL, которые там есть.
- Определите, какие из них реально должны индексироваться.
- Проверьте, не генерирует ли sitemap одновременно WordPress и SEO-плагин.
- Отключите лишние архивы и вложения в настройках плагина.
- Если настроек не хватает, добавьте точечный фильтр в мини-плагин.
- Сбросьте кэш сайта и кэш CDN, если он есть.
- Переотправьте sitemap в Search Console.
Как проверить, что дубли исчезли
После изменений не ограничивайтесь открытием главной страницы sitemap. Нужна проверка на уровне фактического содержимого карты и ответа сервера.
Что смотреть
- в sitemap больше нет исключённых типов URL;
- все вложенные карты открываются без ошибок;
- Search Console видит обновлённый sitemap без старых служебных URL;
- в выдаче sitemap нет страниц пагинации, если вы их отключали;
- нет двух разных sitemap, которые описывают один и тот же набор страниц.
Полезно сравнить старую и новую версию карты сайта. Если вы работаете через консоль, можно сохранить оба файла и посмотреть разницу:
curl -s https://example.com/sitemap_index.xml > sitemap-new.xml
# старую версию сохраните заранее
# затем сравните вручную или через diff
Если используете кэширование, не забудьте проверить sitemap не только в браузере, но и через curl. Иногда в браузере уже новая версия, а CDN ещё отдаёт старую.
Частые ошибки и как их исправить
Отключили слишком много
Иногда после чистки sitemap исчезают не только теги, но и нужные страницы категорий или пользовательские типы записей. Это бывает, если фильтр написан слишком грубо и удаляет весь массив вместо одного элемента. Проверьте, что вы убираете только конкретный ключ, а не весь набор.
Оставили два генератора sitemap
Если одновременно активны встроенный sitemap WordPress и sitemap от SEO-плагина, поисковик может видеть разные карты сайта с пересекающимся набором URL. Оставьте один источник и отключите второй.
Не сбросили кэш
После изменения настроек карта сайта может ещё какое-то время отдавать старую версию. Очистите кэш плагина, серверный кэш и CDN, если он используется.
Удалили URL из sitemap, но не закрыли их логически
Если страница не должна индексироваться, одного удаления из sitemap мало. Проверьте, что она не доступна через внутренние ссылки без необходимости, а при необходимости имеет корректный noindex или канонический URL.
Что делать для стабильности и скорости
На больших сайтах sitemap лучше держать компактным и предсказуемым. Это снижает нагрузку на генерацию и упрощает диагностику. Если у вас много архивов и служебных страниц, не пытайтесь индексировать всё подряд только ради полноты карты сайта.
Практически полезно:
- не включать в sitemap страницы, которые не должны получать органический трафик;
- не плодить архивы тегов без смысла;
- следить, чтобы вложения изображений не создавали отдельный индексируемый слой URL;
- проверять sitemap после обновления SEO-плагина или темы;
- держать один понятный источник генерации sitemap.
Если нужен более широкий контроль над дублями, техническими страницами и очисткой сайта, можно посмотреть в сторону инструментов вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpticket.ru&utm_medium=article&utm_campaign=kak-ubrat-dubli-stranic-iz-xml-sitemap-v-wordpress. Но даже с плагином важно понимать, какие URL вы убираете и почему.
Главная идея простая: sitemap должен помогать поисковику находить нужные страницы, а не перечислять всё, что технически существует на сайте. Чем точнее вы отрежете лишнее, тем проще потом поддерживать индексацию в порядке.