Если в XML sitemap попадают дубли, поисковик получает лишние URL и тратит краулинговый бюджет не туда. На небольшом сайте это обычно не критично, но на проекте с архивами, тегами, пагинацией и кастомными типами записей дубли быстро превращаются в шум: в индексе оказываются страницы, которые вы не планировали продвигать, а важные URL обходятся реже.
Ниже разберём не абстрактную теорию, а рабочий сценарий: как найти источник дублей, что отключить в настройках, что поправить в коде и как проверить, что sitemap стал чище.
Как понять, что в sitemap уже есть дубли
Проблема редко видна по одному признаку. Обычно совпадает несколько симптомов: в Search Console растёт число обнаруженных URL, в sitemap появляются архивы тегов и авторов, а один и тот же контент доступен по нескольким адресам — например, через пагинацию, параметры или отдельные таксономии.
Что проверить в первую очередь
- Откройте XML sitemap в браузере и найдите повторяющиеся шаблоны URL.
- Сравните sitemap индекса и дочерние карты: иногда дубли сидят не в одном файле, а в нескольких.
- Проверьте, не включены ли в карту страницы архивов, которые вы закрываете от индексации.
- Посмотрите, нет ли одинаковых записей в нескольких типах контента: например, пост и кастомный тип с тем же permalink-структурой.
Если сайт использует SEO-плагин, сначала смотрите его настройки. В WordPress дубли в sitemap чаще всего появляются не из-за ядра, а из-за комбинации плагина, темы и лишних архивов.
Диагностика: откуда именно берутся дубли
Удобнее идти по слоям: сначала источник генерации sitemap, потом типы контента, затем таксономии и архивы. Это быстрее, чем сразу править код наугад.
| Источник | Как проявляется | Что делать |
|---|---|---|
| SEO-плагин | В sitemap попадают лишние архивы, теги, авторы | Отключить ненужные типы в настройках |
| Тема или кастомный код | Одинаковые URL в разных шаблонах | Проверить rewrite rules и canonical |
| Плагины таксономий | Дубли страниц категорий и тегов | Скрыть лишние архивы от индексации |
| Пагинация | В sitemap попадают страницы 2, 3, 4 и т.д. без необходимости | Ограничить индексируемые архивы |
Если вы не уверены, какой плагин генерирует карту, откройте исходный код sitemap и посмотрите URL. У Yoast, Rank Math и стандартного sitemap WordPress структура отличается, и это помогает быстро понять источник.
Пошаговое решение без лишнего риска
1. Уберите из sitemap то, что не должно индексироваться
Самый безопасный путь — сначала отключить лишние типы контента в настройках SEO-плагина. Не пытайтесь лечить дубли редиректами, если проблема в самой генерации карты. Редирект не убирает URL из sitemap, он только маскирует симптом.
Если используете стандартный sitemap WordPress, можно исключить типы записей через фильтр wp_sitemaps_post_types. Пример ниже убирает из карты служебный тип landing:
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
if ( isset( $post_types['landing'] ) ) {
unset( $post_types['landing'] );
}
return $post_types;
} );Это рабочий вариант, если sitemap генерирует ядро WordPress. Для SEO-плагинов логика другая: у каждого свои настройки и свои фильтры.
2. Исключите лишние таксономии и архивы
Частая причина дублей — теги, которые дублируют категории по смыслу, или архивы авторов на сайте с одним автором. Если архив не нужен для поиска, лучше отключить его в индексации и не включать в sitemap.
Для стандартного sitemap можно убрать таксономию через wp_sitemaps_taxonomies:
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
if ( isset( $taxonomies['post_tag'] ) ) {
unset( $taxonomies['post_tag'] );
}
return $taxonomies;
} );Если у вас архивы авторов создают дубли с разделом «О нас» или страницей редакции, отключайте их на уровне SEO-плагина или шаблона, а не через хаотичные noindex в контенте.
3. Проверьте canonical и пагинацию
Иногда sitemap чистый, но дубль всё равно появляется из-за неправильного canonical. Например, архив категории и его пагинация могут указывать на первую страницу, а в sitemap при этом лежат все страницы пагинации. Это не всегда ошибка, но если страницы 2+ не несут самостоятельной ценности, их лучше не продвигать.
Проверьте, что canonical на архивных страницах указывает на саму страницу, а не на главную. Для этого откройте исходный код и найдите тег <link rel="canonical">.
4. Очистите кэш и пересоберите sitemap
После изменений sitemap может не обновиться сразу из-за кэша страницы, объекта или CDN. Это особенно заметно, если карта отдается через кэшируемый endpoint. Очистите:
- кэш плагина;
- object cache, если он используется;
- CDN-кэш;
- кэш браузера для проверки.
Если sitemap генерируется ядром WordPress, иногда помогает просто открыть /wp-sitemap.xml после сброса постоянных ссылок в Настройки → Постоянные ссылки. Это пересобирает rewrite rules.
Когда лучше править код, а не настройки
Код нужен, если дубль появляется из-за кастомного типа записей, нестандартной таксономии или логики темы. Например, один и тот же контент доступен через основной URL и через служебный архив, который вы не хотите видеть в sitemap.
Ниже пример, который отключает из sitemap конкретный тип записей и конкретную таксономию. Такой подход удобен, когда сайт уже работает и вам не нужно менять структуру контента целиком:
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
$exclude = array( 'landing', 'promo' );
foreach ( $exclude as $type ) {
if ( isset( $post_types[ $type ] ) ) {
unset( $post_types[ $type ] );
}
}
return $post_types;
} );
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
$exclude = array( 'post_tag', 'brand' );
foreach ( $exclude as $taxonomy ) {
if ( isset( $taxonomies[ $taxonomy ] ) ) {
unset( $taxonomies[ $taxonomy ] );
}
}
return $taxonomies;
} );Если используете SEO-плагин, не смешивайте его фильтры с фильтрами ядра без необходимости. Сначала проверьте, кто именно отдаёт sitemap, и только потом вносите правки.
Чек-лист после исправления
- В sitemap нет служебных типов записей.
- Теги, авторы и архивы, которые не нужны в поиске, исключены.
- Canonical на основных страницах указывает на сам URL.
- Пагинация не засоряет карту без причины.
- Кэш sitemap очищен на всех уровнях.
- В Search Console отправлена обновлённая карта сайта.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Откройте sitemap и убедитесь, что исчезли лишние URL. Затем проверьте несколько страниц вручную:
- Откройте
/wp-sitemap.xmlили sitemap SEO-плагина. - Проверьте, что нужные URL остались, а лишние исчезли.
- Посмотрите исходный код страниц с архивами и убедитесь, что canonical не сломан.
- В Search Console отправьте sitemap повторно и отслеживайте отчёт по страницам в индексе.
Если дубли были вызваны кэшем, изменения могут появиться не сразу. В этом случае важно проверить именно исходный XML, а не только страницу в браузере.
Частые ошибки и как их исправить
Отключили URL в sitemap, но они всё равно индексируются
Это значит, что URL уже известны поисковику из внутренних ссылок, старых карт сайта или внешних ссылок. Уберите причины появления дубля: проверьте меню, хлебные крошки, блоки похожих материалов и старые редиректы.
Поставили noindex, но оставили URL в sitemap
Так делать можно, но это плохая комбинация для чистоты индекса. Если страница не должна индексироваться, логичнее убрать её и из sitemap. Иначе поисковик получает противоречивый сигнал.
Сломали sitemap после правки functions.php
Часто проблема в том, что код вставили в активную тему, а потом обновили её. Для таких правок лучше использовать дочернюю тему или небольшой mu-plugin. Тогда фильтры не пропадут после обновления.
Удалили архивы, но забыли про внутренние ссылки
Если на сайте остались ссылки на удалённые архивы, они будут продолжать обходиться. После чистки sitemap пройдитесь по шаблонам: меню, футер, блоки таксономий, связанные записи.
Что учесть по безопасности и производительности
Чем меньше лишних URL в sitemap, тем меньше шума для обхода и тем проще поддерживать сайт. Но не стоит превращать чистку в бесконечную оптимизацию ради оптимизации. Удаляйте только то, что реально не нужно в индексе.
Если вы используете плагины для SEO и чистки дублей, проверьте, не дублируют ли они друг друга по функциям. Например, если у вас уже есть плагин для удаления дублей, не включайте параллельно ещё один модуль с тем же поведением без необходимости. Для задач очистки и удаления лишних технических элементов на сайте иногда удобен Clearfy Pro, но только если он реально закрывает вашу задачу и не конфликтует с текущим SEO-стеком.
Для production-сайта любые изменения в sitemap лучше сначала проверить на staging-копии. Это дешевле, чем потом разбираться, почему из индекса пропали нужные страницы или сломались архивы.