wpdownload.ru wordpress WPDownload.ru

Как удалить дубли из XML sitemap в WordPress и не сломать индексацию

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

Ниже — рабочий сценарий: сначала находим источник дублей, потом убираем их на уровне настроек и кода, а после проверяем, что карта сайта стала чище и не потеряла нужные URL.

Как понять, что дубли действительно идут из sitemap

Не стоит начинать с правки кода, пока не ясно, откуда именно берутся лишние ссылки. В WordPress дубли в sitemap чаще всего создают:

  • вложения медиафайлов, если они открыты как отдельные страницы;
  • архивы авторов, дат, тегов и пустых таксономий;
  • черновики и приватные записи, если их случайно подхватил плагин;
  • кастомные типы записей, для которых карта сайта включена без проверки;
  • дубли одного и того же контента в разных форматах URL.

Быстрая диагностика

Откройте sitemap в браузере и посмотрите, какие типы URL повторяются. Если у вас используется стандартный sitemap WordPress, адрес обычно выглядит как /wp-sitemap.xml. У SEO-плагинов путь может быть другим, но логика та же: ищем повторяющиеся шаблоны URL и лишние разделы.

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

Что именно нужно убрать из XML sitemap

Здесь важно не путать «дубль» и «лишний URL». Дубль — это когда один и тот же контент доступен по нескольким адресам. Лишний URL — это когда страница сама по себе не нужна в индексе, но попала в sitemap. Для чистки карты сайта обычно убирают:

  • attachment-страницы вложений;
  • пустые или служебные архивы;
  • страницы пагинации, если они не несут отдельной ценности;
  • таксономии без контента;
  • внутренние страницы поиска и служебные шаблоны.

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

Пошаговое решение: убрать лишние URL из sitemap

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

ПодходКогда подходитПлюсыМинусы
Настройки SEO-плагинаНужно быстро скрыть типы страниц без кодаПросто поддерживать, меньше риска сломать сайтНе всегда хватает точности
Код через фильтрыНужно убрать конкретные URL или типы объектовТочный контроль, не зависит от интерфейсаТребует проверки после обновлений
Комбинированный вариантЕсть и SEO-плагин, и нестандартные типы записейГибкость и управляемостьНужно следить, чтобы правила не конфликтовали

1. Убираем вложения и служебные типы записей

Если вы используете стандартный sitemap WordPress, можно отключить отдельные типы объектов через фильтр wp_sitemaps_post_types. Пример ниже убирает вложения из карты сайта и оставляет только нужные типы записей:

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['attachment'] );

    // Если нужно, можно отключить и другие типы:
    // unset( $post_types['revision'] );
    // unset( $post_types['nav_menu_item'] );

    return $post_types;
} );

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

2. Исключаем пустые таксономии

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

add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    foreach ( $taxonomies as $taxonomy => $object ) {
        if ( in_array( $taxonomy, array( 'post_tag', 'post_format' ), true ) ) {
            unset( $taxonomies[ $taxonomy ] );
        }
    }

    return $taxonomies;
} );

Не отключайте таксономии вслепую. Если рубрики или теги реально дают трафик и у них есть уникальный контент, лучше оставить их в sitemap и отдельно поработать с качеством страниц.

3. Если используется SEO-плагин

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

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

Проверка результата после внедрения

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

  • Откройте sitemap в режиме инкогнито и проверьте, исчезли ли лишние разделы.
  • Сравните количество URL до и после изменения.
  • Проверьте, что важные страницы, записи и нужные таксономии остались в карте сайта.
  • Если есть Search Console, отправьте sitemap повторно и посмотрите, не растет ли число исключенных URL по старым причинам.

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

curl -I https://example.com/wp-sitemap.xml

В ответе важно увидеть 200 OK. Если у вас sitemap генерируется SEO-плагином, проверьте его адрес отдельно. Иногда проблема не в содержимом, а в редиректе, который ломает обход.

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

Отключили не тот тип записей

Самая частая ошибка — убрать из sitemap тип записи, который реально нужен для индексации. Например, кастомный тип с полезными страницами. Исправление простое: верните тип обратно и проверьте, есть ли у него публичные одиночные страницы и корректные canonical.

Удалили URL из sitemap, но не закрыли дубли

Если одна и та же страница доступна по нескольким адресам, одного удаления из sitemap мало. Нужно проверить canonical, редиректы и внутренние ссылки. Иначе поисковик все равно найдет альтернативный URL.

Кеш отдает старую карту сайта

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

Сломали sitemap на уровне темы

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

Как не создать новые проблемы с индексацией

Чистка sitemap не должна превращаться в хаотичное отключение всего подряд. Если задача — уменьшить шум в индексации, держите несколько правил:

  • не убирайте из sitemap страницы, которые должны получать переходы из поиска;
  • не отключайте архивы только потому, что они «кажутся лишними»;
  • проверяйте связку sitemap + canonical + robots.txt, а не только один файл;
  • после изменений смотрите логи обхода и отчеты Search Console, если они доступны;
  • не смешивайте в одном месте логику SEO и логику шаблона темы без необходимости.

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

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее