Если в XML Sitemap попадают страницы, которые не должны индексироваться, поисковик получает лишние сигналы: дубли, архивы с тонким контентом, служебные URL, страницы с параметрами. На небольшом сайте это обычно незаметно, но на живом проекте sitemap быстро превращается в список всего подряд, а не в карту важных страниц.
Ниже разберём, как найти источник дублей, что именно исключать и как проверить, что sitemap стал чище. Примеры подойдут для WordPress с Yoast SEO, Rank Math и кастомной темой/плагином, где sitemap формируется через стандартные фильтры WordPress.
Когда проблема действительно в sitemap
Сначала стоит убедиться, что речь именно о карте сайта, а не о проблеме индексации в целом. Дубли в sitemap обычно проявляются так:
- в XML есть URL с параметрами, например
?replytocom=или UTM-метками; - в sitemap попадают архивы тегов, авторов, дат, хотя они не несут ценности;
- есть страницы пагинации, которые дублируют список записей;
- в карту сайта попадают вложения медиафайлов, если они открыты как отдельные страницы;
- после смены структуры URL старые адреса всё ещё появляются в sitemap.
Что проверить в первую очередь
- Откройте
/sitemap_index.xmlи посмотрите, какие карты вообще подключены. - Проверьте отдельные карты: записи, страницы, рубрики, теги, авторы, медиа.
- Сравните URL из sitemap с тем, что реально должно индексироваться.
- Посмотрите, нет ли в sitemap адресов, закрытых через
noindexили canonical.
Если URL есть в sitemap, но вы уже закрыли его от индексации, это не всегда критично, но такой конфликт лучше убрать. Sitemap должен показывать только те страницы, которые вы действительно хотите отдавать в поиск.
Диагностика: откуда берутся лишние URL
В WordPress дубли обычно появляются не из-за одной ошибки, а из-за набора настроек. Чаще всего виноваты:
- архивы тегов и авторов, которые включены по умолчанию;
- страницы пагинации архивов;
- медиа-attachment страницы;
- служебные таксономии и CPT без контента;
- параметры в URL, которые попали в индексируемую карту;
- остатки старых URL после редизайна или смены структуры постоянных ссылок.
Если у вас стоит SEO-плагин, начните с его настроек. Если sitemap генерируется кодом темы или плагина, проверьте фильтры, которые формируют список URL перед выводом XML.
Пошаговое решение
1. Отключите лишние типы страниц в SEO-плагине
В Yoast SEO и Rank Math обычно можно отдельно выключить архивы авторов, дат, тегов и медиа-страницы. Это самый безопасный путь, если сайт типовой и не требует кастомной логики.
Для сайтов с небольшим количеством авторов архивы авторов часто не нужны. Если у вас один редактор или архив автора не несёт пользы, его лучше убрать из sitemap и закрыть от индексации.
То же касается тегов: если теги используются формально и на них нет уникального контента, не стоит тащить их в карту сайта.
2. Исключите медиа-attachment страницы
WordPress создаёт отдельные страницы вложений. На многих сайтах они бесполезны и только засоряют sitemap. Если изображения нужны только внутри записей, attachment-страницы лучше отключить или редиректить на сам файл/родительскую запись.
В Yoast это обычно решается настройкой медиа. В кастомной реализации можно убрать attachment из списка индексируемых объектов.
3. Отфильтруйте URL с параметрами
Если в sitemap попадают адреса с параметрами, это почти всегда ошибка логики генерации. Такие URL не должны попадать в XML, даже если они технически открываются в браузере.
Ниже пример, как отфильтровать URL перед выводом sitemap, если вы формируете список сами или через промежуточный массив:
<?php
function wppopup_filter_sitemap_urls( array $urls ): array {
$blocked_params = array( 'replytocom', 'utm_source', 'utm_medium', 'utm_campaign' );
$result = array();
foreach ( $urls as $url ) {
$parts = wp_parse_url( $url );
if ( empty( $parts['path'] ) ) {
continue;
}
if ( ! empty( $parts['query'] ) ) {
parse_str( $parts['query'], $query_args );
$has_blocked = false;
foreach ( $blocked_params as $param ) {
if ( array_key_exists( $param, $query_args ) ) {
$has_blocked = true;
break;
}
}
if ( $has_blocked ) {
continue;
}
}
$result[] = $url;
}
return $result;
}Этот код не меняет sitemap WordPress сам по себе, но показывает принцип: сначала отсекаем URL с параметрами, потом уже отдаём XML. Если у вас SEO-плагин с собственным генератором, используйте его фильтры, а не правьте ядро.
4. Уберите архивы, которые не дают ценности
Если в sitemap попадают архивы, которые не нужны для поиска, их лучше исключить. Это касается:
- архивов дат на новостных или статичных сайтах;
- архивов авторов на проектах с одним автором;
- пустых или почти пустых тегов;
- служебных таксономий, которые используются только внутри админки.
В кастомной теме можно отключить лишние типы архивов через фильтрацию списка URL. Пример для собственного sitemap-генератора:
<?php
function wppopup_should_skip_sitemap_url( string $url ): bool {
$skip_patterns = array(
'#/tag/#',
'#/author/#',
'#/date/#',
'#/page/\d+/#',
'#attachment/#',
);
foreach ( $skip_patterns as $pattern ) {
if ( preg_match( $pattern, $url ) ) {
return true;
}
}
return false;
}Если используете готовый SEO-плагин, аналогичная логика обычно решается настройкой разделов sitemap или фильтрами плагина, а не регулярками в лоб.
Сравнение подходов
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройки SEO-плагина | Типовой сайт, стандартные архивы, без сложной логики | Не всегда хватает гибкости для кастомных типов записей |
| Фильтры и код | Нужно точечно исключить CPT, таксономии, параметры, attachment | Требует аккуратной проверки после обновлений |
| Комбинированный вариант | Часть URL убирается в плагине, часть — в коде | Нужно следить, чтобы правила не конфликтовали |
На практике чаще всего работает комбинированный вариант: базовую чистку делаете в SEO-плагине, а точечные исключения — в коде темы или небольшого mu-plugin.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальным просмотром sitemap. Проверьте результат по шагам:
- Откройте
/sitemap_index.xmlи убедитесь, что лишние карты исчезли. - Проверьте отдельные sitemap-файлы: нет ли там URL с параметрами, архивов и attachment-страниц.
- Скачайте XML и найдите проблемные шаблоны через поиск по тексту.
- В Google Search Console отправьте sitemap повторно и посмотрите, нет ли ошибок чтения.
- Сравните список URL в sitemap с каноническими страницами сайта.
Если URL всё ещё присутствует, значит, вы убрали только индексацию, но не источник генерации. В таком случае нужно искать, какой плагин или какой фильтр добавляет адрес в карту сайта.
Частые ошибки и как их исправить
Закрыли страницу от индексации, но оставили её в sitemap
Это не всегда критично, но выглядит как несогласованная настройка. Если страница не должна индексироваться, уберите её и из sitemap, и из внутренних ссылок, если они не нужны.
Удалили URL из sitemap, но не настроили canonical
Если страница доступна по нескольким адресам, одной чистки sitemap мало. Нужен canonical на основную версию URL, иначе дубли могут остаться в индексе.
Сломали sitemap после обновления плагина
Так бывает, если правки вносились в шаблон плагина напрямую. После обновления изменения перетираются. Безопаснее использовать фильтры, mu-plugin или отдельный мини-плагин.
Исключили слишком много страниц
Иногда под чистку попадают полезные записи, категории или страницы услуг. Перед выкладкой сверяйте список исключений с реальной структурой сайта. Особенно осторожно работайте с кастомными типами записей.
Практические советы по безопасности и производительности
Чистый sitemap — это не только про SEO. Чем меньше лишней логики в генерации XML, тем проще поддерживать сайт. Несколько практических правил:
- не правьте файлы SEO-плагина напрямую;
- если пишете свой фильтр, вынесите его в отдельный mu-plugin;
- не генерируйте sitemap на каждом запросе без необходимости;
- не добавляйте в карту URL, которые заведомо закрыты от индексации;
- после крупных изменений в структуре сайта пересоберите sitemap и проверьте Search Console.
Если на сайте уже накопились дубли, иногда полезно сначала навести порядок в индексации и только потом трогать sitemap. Иначе можно получить ситуацию, когда карта сайта чистая, а старые URL всё ещё живут в поиске.
Для сайтов, где много служебных страниц и дублей, удобно использовать инструменты вроде Clearfy Pro как часть общей чистки сайта: он помогает убрать лишние элементы и сократить количество технического мусора, который потом приходится вылавливать вручную.
Если после правок sitemap всё ещё содержит мусор, проверьте не только SEO-плагин, но и тему, кастомные плагины, генераторы XML и кэш. В WordPress лишний URL часто появляется не там, где вы его ожидаете.