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

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

Если сайт уже проиндексирован, исправлять это лучше не «в лоб» через массовый noindex на всё подряд, а по схеме: сначала найти источник дубля, потом решить, что должно индексироваться, и только после этого ставить canonical, редиректы или закрытие от индексации.

Как понять, что проблема именно в дублях

Симптомы обычно довольно приземлённые: одна и та же статья открывается по нескольким адресам, в Search Console растёт число страниц с пометкой «дубликат, выбранная пользователем каноническая страница отличается», а в выдаче появляются не те URL, которые вы продвигаете. На небольшом сайте это заметно по логам и по ручной проверке, на большом — только через краулинг.

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

  • страницы с параметрами вида ?replytocom=, ?amp, UTM и фильтрами;
  • архивы тегов, рубрик, автора и дат, если они повторяют основной контент;
  • страницы вложений медиафайлов;
  • дубли со слэшем и без слэша, с www и без него;
  • страницы пагинации, если они индексируются без необходимости;
  • технические копии через темы и плагины: отдельные шаблоны, блоки похожих записей, выводы в RSS и JSON-эндпоинтах.

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

curl -I https://example.com/post-name/
curl -I https://example.com/post-name
curl -I https://example.com/tag/some-tag/
curl -I https://example.com/author/admin/

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

Какие дубли WordPress создаёт чаще всего

Ниже — не теория, а типовые случаи, которые встречаются на обычных редакционных сайтах и блогах. У каждого сценария своё решение, и смешивать их не стоит.

Источник дубляЧто делатьКомпромисс
Параметры в URLРедиректить или игнорировать в индексацииНе всегда можно убрать, если параметр нужен для функционала
Архивы тегов и автораОставить только полезные, остальные закрытьЧасть внутренней перелинковки потеряется
Страницы вложенийРедиректить на файл или родительскую записьНужно проверить медиатеку и SEO-плагины
ПагинацияОставить доступной, но не плодить лишние копииНе всегда стоит закрывать полностью

Пошаговое решение: от поиска до исправления

Шаг 1. Определите канонический URL

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

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

add_action( 'wp_head', function () {
    if ( is_singular() ) {
        echo '<link rel="canonical" href="' . esc_url( get_permalink() ) . '" />' . "\n";
    }
}, 1 );

Этот вариант уместен только если у вас нет конфликта с SEO-плагином. Если плагин уже выводит canonical, второй тег создавать нельзя.

Шаг 2. Уберите технические дубли редиректом

Если у страницы есть очевидные альтернативы, лучше не закрывать их noindex, а отдавать 301 на основной адрес. Это касается вложений, старых URL после смены структуры и адресов без слэша, если сайт работает в едином формате.

Для вложений можно сделать редирект на родительскую запись или сам файл, если медиа действительно нужно открывать отдельно. Пример для functions.php или мини-плагина:

add_action( 'template_redirect', function () {
    if ( is_attachment() ) {
        $parent = wp_get_post_parent_id( get_queried_object_id() );

        if ( $parent ) {
            wp_redirect( get_permalink( $parent ), 301 );
            exit;
        }

        wp_redirect( home_url( '/' ), 301 );
        exit;
    }
} );

Такой редирект полезен, если страницы вложений не несут самостоятельной ценности. Если же у вас медиа-архивы используются осознанно, редирект нужно пересмотреть.

Шаг 3. Закройте от индексации архивы, которые не дают трафик

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

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

add_filter( 'wp_robots', function ( array $robots ) {
    if ( is_tag() || is_author() ) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }

    return $robots;
} );

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

Шаг 4. Проверьте параметры URL и фильтры

Параметры вроде utm_source не должны создавать отдельные индексируемые страницы. Обычно поисковик сам склеивает такие адреса, но если на сайте есть внутренние ссылки с параметрами, лучше убрать их из шаблонов и кнопок.

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

Как проверить, что исправление сработало

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

  • проверьте, что старые URL отдают 301, а не 200;
  • убедитесь, что на странице остался один canonical;
  • посмотрите исходный код и найдите meta robots только там, где это действительно нужно;
  • запустите повторный обход сайта в Screaming Frog, Sitebulb или аналогичном краулере;
  • в Search Console откройте отчёт по индексированию и посмотрите, уменьшилось ли число дублей.

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

curl -s https://example.com/post-name/ | grep -i canonical

Если на странице несколько canonical или он указывает на несуществующий адрес, решение нужно откатывать и искать конфликт в теме, плагине или фильтре.

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

Ставят noindex вместо редиректа

Это частая ошибка на старых сайтах. Noindex убирает страницу из индекса, но не решает проблему дубля как такового. Если у адреса есть явный основной вариант, лучше сделать 301.

Закрывают важные архивы вместе с мусорными

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

Оставляют страницы вложений без редиректа

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

Путают canonical и редирект

Canonical — это подсказка поисковику, а 301 — явное перенаправление. Если есть технический дубль, полагаться только на canonical рискованно. Если есть контентный дубль, иногда лучше оставить canonical и не ломать пользовательский сценарий.

Меняют правила без проверки шаблонов

Иногда дубль создаёт не WordPress, а тема: отдельный шаблон архива, блок похожих записей, вывод одного и того же материала в нескольких местах. После правок обязательно проверьте исходники страниц и шаблоны архива.

Что делать для безопасности и производительности

Если вы правите canonical, robots и редиректы кодом, не вносите изменения прямо в активную тему без контроля версий. Лучше использовать дочернюю тему или небольшой must-use плагин. Так вы не потеряете правки после обновления.

Для сайтов с большим количеством дублей полезно дополнительно проверить, не создают ли их плагины чистки и SEO-надстройки. Иногда проще отключить один конфликтующий модуль, чем пытаться лечить симптомы в шаблоне. Если нужен более широкий набор инструментов для SEO-очистки и удаления дублей, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy.

И ещё один практический момент: после массовых редиректов и правок robots не забывайте обновить sitemap и прогнать сайт через краулер. Иначе старые URL будут висеть в отчётах, даже если на фронтенде всё уже исправлено.

⭐⭐⭐⭐⭐