WordPress Notes WPTicket

Как убрать дубли из XML sitemap и robots.txt в WordPress

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

Ниже — рабочий сценарий: как найти источник дублей, что именно править в WordPress, как не сломать индексацию и как проверить результат после изменений.

Когда проблема действительно в sitemap и robots.txt

Сначала стоит убедиться, что вы боретесь именно с причиной, а не с симптомом. Если в индексе есть дубли, они могут приходить из:

  • XML sitemap с лишними типами записей, архивами или вложениями;
  • robots.txt, который закрывает не те разделы или, наоборот, разрешает технические;
  • канонических URL, которые не совпадают с фактическими;
  • параметров в URL, которые попали в карту сайта через тему или плагин;
  • дублирующих архивов автора, даты, тегов, категорий.

Что смотреть в первую очередь

Откройте карту сайта и проверьте, нет ли там URL, которые не должны индексироваться: страницы поиска, вложения, служебные архивы, URL с параметрами. Затем откройте /robots.txt и посмотрите, не блокирует ли он саму карту сайта или важные разделы сайта.

Если используется SEO-плагин, часть настроек может быть в его интерфейсе, а часть — в коде темы или плагина. Поэтому важно не править всё подряд в одном месте.

Диагностика: откуда берутся дубли

Удобнее идти по цепочке: карта сайта, robots, каноникал, архивы. Это быстрее, чем искать проблему по всему сайту.

1. Проверка XML sitemap

Откройте основной sitemap, например /sitemap_index.xml, и посмотрите, какие наборы URL он содержит. Если там есть лишние архивы, медиафайлы или таксономии, которые не нужны для поиска, их лучше отключить в настройках SEO-плагина или темы.

2. Проверка robots.txt

В WordPress robots.txt может быть виртуальным, то есть генерироваться на лету. Это удобно, но из-за этого легко не заметить конфликт между правилами плагина и кастомным кодом. Проверьте, нет ли строк вроде Disallow: /, случайных запретов для /wp-content/ или блокировки /sitemap_index.xml.

3. Проверка канонических URL

Если страница доступна по нескольким адресам, но в HTML указан неверный rel="canonical", поисковик может выбрать не тот URL. Это часто случается после правок шаблона, установки кэша или вмешательства в SEO-метатеги.

Пошаговое решение без лишнего риска

Лучше исправлять источник дублей по слоям: сначала настройки SEO-плагина, потом robots, затем код темы и только после этого — переиндексация.

Шаг 1. Уберите лишние типы URL из sitemap

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

Если нужен контроль на уровне кода, можно фильтровать sitemap через wp_sitemaps_posts_query_args и wp_sitemaps_taxonomies. Пример ниже убирает вложения и ограничивает набор таксономий:

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['attachment'] );
    return $post_types;
} );

add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    unset( $taxonomies['post_tag'] );
    return $taxonomies;
} );

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

Шаг 2. Приведите robots.txt к одному источнику правды

Если robots.txt генерируется SEO-плагином, не дублируйте его содержимое вручную в корне сайта. Иначе через время получите конфликт: одна версия в файле, другая — в виртуальном robots WordPress.

Для кастомной правки используйте фильтр robots_txt. Например, чтобы добавить карту сайта и не трогать остальное:

<?php
add_filter( 'robots_txt', function( $output, $public ) {
    $output .= "\nSitemap: " . home_url( '/sitemap_index.xml' );
    return $output;
}, 10, 2 );

Если у вас уже есть sitemap в robots, не добавляйте вторую строку с другим адресом. Поисковику достаточно одной корректной ссылки.

Шаг 3. Закройте генерацию дублей на уровне шаблона

Иногда дубли создаёт тема: выводит архивы автора, даты, вложения или страницы поиска в навигации и sitemap. В этом случае правка только в SEO-плагине не поможет.

Проверьте:

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

Шаг 4. Убедитесь, что каноникал указывает на основной URL

Если на странице есть несколько вариантов адреса, canonical должен вести на один основной URL без параметров. Для проверки откройте исходный код страницы и найдите rel="canonical". Если там URL с ?utm_, ?sort= или другим параметром, это нужно исправлять в шаблоне или SEO-настройках.

Сравнение подходов: плагин, код или ручная правка

ПодходКогда подходитПлюсыМинусы
Настройки SEO-плагинаНужно быстро убрать лишние типы URL из sitemapБезопасно, без правки кодаНе всегда решает проблему каноникала и темы
Код в functions.php или mu-pluginНужен точечный контроль над sitemap и robotsГибко, можно зафиксировать поведениеТребует тестирования после обновлений
Ручная правка robots.txtНебольшой сайт без виртуального robotsПросто и быстроЛегко создать конфликт с плагином

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

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

  • Откройте /robots.txt и проверьте, что там нет конфликтующих директив.
  • Откройте /sitemap_index.xml и убедитесь, что лишние разделы исчезли.
  • Проверьте исходный код нескольких страниц на наличие корректного canonical.
  • В Google Search Console отправьте sitemap на повторную обработку.
  • Посмотрите, не появились ли новые ошибки сканирования после обновления.

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

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

Дубли закрыли в robots.txt, но они остались в индексе

Это нормальная ситуация. robots.txt не удаляет уже проиндексированные страницы, а только ограничивает сканирование. Если URL уже в индексе, нужно дополнительно убрать их из sitemap, поставить корректный canonical и при необходимости отдать noindex на уровне страницы.

В sitemap пропали нужные страницы

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

robots.txt конфликтует с SEO-плагином

Если плагин генерирует виртуальный robots, а вы ещё и положили физический файл в корень, итог может зависеть от конфигурации сервера и плагинов. Оставьте один источник генерации. Обычно безопаснее управлять robots через плагин или через один небольшой фрагмент кода.

Каноникал указывает на URL с параметрами

Это часто бывает после кэширования страниц с UTM-метками или параметрами фильтра. Проверьте, не подменяет ли canonical тема, SEO-плагин или кастомный шаблон. Если есть отдельный плагин для кэша, очистите его после правок.

Практические советы по безопасности и производительности

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

Перед изменениями сделайте резервную копию базы и файлов. Особенно если вы трогаете sitemap, canonical и robots одновременно: откат потом проще, чем ручной поиск сломанной настройки.

Если сайт использует кэш, после правок очистите:

  • кэш плагина;
  • серверный кэш, если он есть;
  • CDN-кэш;
  • кэш браузера для проверки.

Для сайтов, где нужно регулярно чистить дубли и технический мусор, полезно смотреть в сторону инструментов, которые умеют управлять индексируемостью и служебными страницами централизованно. Например, у Clearfy Pro есть набор функций для технической чистки WordPress: https://wpshop.ru/plugins/clearfy?utm_source=wpticket.ru&utm_medium=article&utm_campaign=kak-ubrat-dubli-iz-xml-sitemap-i-robots-v-wordpress

Что считать успешным результатом

Решение можно считать рабочим, если выполняются три условия: в sitemap остались только нужные URL, robots.txt не конфликтует с генерацией WordPress и SEO-плагина, а canonical на страницах указывает на основной адрес без параметров. Если хотя бы один из этих пунктов не выполнен, дубли обычно возвращаются через переобход или после очередного обновления плагина.

×
Прокачай свой сайт WordPress!

WordPress

-20% на премиум темы и плагины

Создай сайт своей мечты ⋙