Если в XML sitemap появляются дубли, поисковик получает лишние URL: страницы вложений, архивы, служебные таксономии, пагинацию или дубли с параметрами. На небольшом сайте это часто выглядит как «мелочь», но на практике мешает нормальной индексации и усложняет диагностику в Search Console.
Ниже разберём рабочий сценарий: как понять, откуда берутся лишние адреса, чем их лучше убрать — настройкой, кодом или плагином — и как проверить, что sitemap стал чище.
Когда проблема действительно в sitemap
Сначала стоит убедиться, что речь именно о карте сайта, а не о дублях в самом контенте. Типичный признак: в отчётах Search Console видны URL, которые вы не хотите индексировать, но они продолжают попадать в sitemap и регулярно обходятся ботом.
Что обычно попадает в лишние URL
- страницы вложений медиафайлов;
- архивы авторов, дат, рубрик без контента;
- теги и таксономии с тонким или дублирующимся содержимым;
- служебные страницы с параметрами сортировки или фильтрации;
- дубли записей через альтернативные URL, если их генерирует тема или плагин.
Быстрая диагностика
Проверьте сам sitemap и список URL в нём. Если сайт использует встроенный XML sitemap WordPress, откройте /wp-sitemap.xml. Если стоит SEO-плагин, карта может генерироваться им, и тогда настройки будут в его интерфейсе.
curl -s https://example.com/wp-sitemap.xml | head -n 40Дальше откройте проблемный дочерний sitemap, например для записей или таксономий, и посмотрите, какие типы URL туда входят. Если там есть то, что вы не хотите индексировать, нужно не «чистить» sitemap вручную, а отключать источник генерации.
Как убрать дубли: три рабочих подхода
Выбор зависит от того, чем именно генерируется sitemap. Если сайт небольшой и у вас уже есть SEO-плагин, чаще всего проще настроить исключения в нём. Если нужна точечная логика — лучше код. Если сайт поддерживает редактором контент-менеджер, а разработчика нет под рукой, допустим и плагин, но с пониманием ограничений.
| Подход | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| Настройки SEO-плагина | Нужно быстро убрать типовые архивы и таксономии | Без кода, удобно для редакции | Не всегда хватает точности |
| Код через фильтры WordPress | Нужна точечная логика и контроль | Прозрачно, предсказуемо, без лишних зависимостей | Требует правки темы или mu-plugin |
| Отключение генерации отдельных типов URL | Нужно убрать целый класс дублей | Чистое решение на уровне источника | Можно случайно убрать полезные URL |
Пошаговое решение через код
Если sitemap генерируется встроенным механизмом WordPress, можно отключить отдельные типы записей, таксономий или пользователей через фильтры. Это безопаснее, чем пытаться править XML на лету.
Ниже пример для functions.php дочерней темы или, лучше, для небольшого mu-plugin.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
// Убираем вложения из sitemap.
if ( isset( $post_types['attachment'] ) ) {
unset( $post_types['attachment'] );
}
return $post_types;
} );
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
// Пример: скрываем теги, если они создают дубли и не несут ценности.
if ( isset( $taxonomies['post_tag'] ) ) {
unset( $taxonomies['post_tag'] );
}
return $taxonomies;
} );
add_filter( 'wp_sitemaps_users_query_args', function( $args ) {
// Если архивы авторов не нужны в sitemap, можно ограничить генерацию.
$args['has_published_posts'] = false;
return $args;
} );Важно: последний пример зависит от того, как именно вы хотите обрабатывать авторов. Если архивы авторов нужны, не отключайте их только ради чистоты карты сайта. Лучше сначала решить, должны ли они вообще индексироваться.
Если sitemap генерирует SEO-плагин
У популярных SEO-плагинов свои настройки XML sitemap. Там обычно можно отключить:
- медиа-вложения;
- отдельные таксономии;
- архивы авторов;
- служебные типы контента;
- посты с noindex, если плагин это поддерживает.
Смысл тот же: не маскировать дубли, а не допускать их в карту сайта вообще.
Как найти источник дублей в теме или плагине
Иногда проблема не в WordPress core и не в SEO-плагине, а в теме или стороннем плагине, который добавляет собственные URL в sitemap или создаёт альтернативные страницы. Тогда нужно искать фильтры и генераторы в коде.
Практический порядок такой:
- Отключите по очереди плагины, которые влияют на SEO, фильтры, каталог, медиа или мультиязычность.
- Проверьте, исчез ли лишний URL из sitemap.
- Если да — ищите настройку или фильтр именно в этом плагине.
- Если нет — проверьте тему на добавление кастомных архивов и шаблонов.
Для разработчика полезно быстро найти, где именно подключается генерация. В кодовой базе ищите строки вроде wp_sitemaps, noindex, attachment, author, taxonomy.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальным просмотром XML. Нужно проверить и сам sitemap, и ответ сервера, и поведение поисковика.
Чек-лист проверки
- открывается
/wp-sitemap.xmlили sitemap SEO-плагина без ошибок; - из карты исчезли отключённые типы URL;
- внутренние ссылки на сайт не сломались;
- в Search Console новые URL больше не появляются в отчётах по sitemap;
- нет редиректов или 404 на страницах, которые вы оставили в индексации.
Проверить наличие конкретного URL можно и вручную через grep:
curl -s https://example.com/wp-sitemap.xml | grep -n "attachment"Если строка не выводится, это ещё не финальное доказательство, но хороший признак. Затем откройте дочерние sitemap-файлы и убедитесь, что лишний тип контента действительно исчез.
Частые ошибки и как их исправить
Удалили URL из sitemap, но не закрыли сам архив
Это частая путаница. Sitemap и индексируемость — не одно и то же. Если архив остаётся доступным по прямой ссылке, поисковик может продолжать его обходить. Для таких страниц обычно нужно отдельно решить вопрос с noindex, canonical или редиректом.
Отключили слишком много
Иногда вместе с дублями убирают полезные страницы: рубрики, которые реально приводят трафик, или авторские архивы, если они используются как навигация. Перед изменениями проверьте, какие URL дают переходы и нужны ли они вообще.
Правили XML вручную
Это плохая идея. Sitemap генерируется динамически, и ручная правка быстро исчезнет при следующем обновлении кэша или регенерации. Менять нужно источник генерации, а не готовый файл.
Забыли про кэш
Если сайт использует кэш страницы или CDN, старый sitemap может продолжать отдаваться ещё какое-то время. После правок очистите кэш плагина, серверный кэш и CDN, если он есть.
Безопасность и производительность
Чистый sitemap полезен не только для SEO. Он уменьшает шум в логах, снижает количество бесполезных обходов и упрощает диагностику. Но не стоит превращать это в бесконечную чистку всего подряд.
Если у вас много служебных архивов, дублирующих таксономий и технических страниц, иногда проще централизованно управлять ими через SEO-плагин. Например, в Clearfy Pro есть инструменты для удаления дублей и технической чистки сайта, что удобно, когда нужно не точечно править один sitemap, а привести в порядок несколько источников лишних URL. Подробности можно посмотреть на странице плагина.
Но даже с плагином правило остаётся прежним: сначала определите, какие URL должны существовать, а уже потом убирайте их из карты сайта и индексации.
Что делать, если sitemap всё равно содержит лишние URL
Если после настроек дубли не исчезли, проверьте три вещи: не генерирует ли их другой SEO-плагин, не отдаёт ли их кэш, и не создаёт ли их мультиязычный плагин или фильтр параметров. В сложных установках один и тот же URL может появляться из нескольких источников, и тогда отключение только одного фильтра не даст эффекта.
Практика здесь простая: меняете один параметр, очищаете кэш, проверяете XML, затем переходите к следующему источнику. Такой пошаговый подход быстрее, чем попытка «починить всё сразу».