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

Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: страницы архива доступны с разными параметрами, один и тот же контент открывается по нескольким URL, в индексе остаются версии с ?replytocom, /page/2/, ?amp, http и https. Если это не контролировать, поисковик начинает выбирать не тот адрес, а в отчётах растут «Просканировано, но не проиндексировано» и похожие сигналы.

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

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

Признаки, которые стоит проверить вручную

  • одна и та же статья открывается с www и без www;
  • страница доступна по http и https;
  • архив категории имеет дубли с параметрами сортировки или UTM;
  • в индексе есть страницы с /page/2/, хотя они не должны ранжироваться отдельно;
  • в поиске всплывают адреса с ?replytocom или другими служебными параметрами.

Быстрая диагностика через браузер и Search Console

Откройте проблемный URL и посмотрите исходный код страницы. В <head> должен быть один канонический адрес:

<link rel="canonical" href="https://example.com/sample-post/" />

Если canonical указывает на другой адрес, либо его нет вообще, это уже повод разбирать шаблон темы или плагины SEO/кеширования. В Google Search Console полезно сравнить Проверку URL и фактический канонический URL, который выбрал Google.

Откуда в WordPress берутся дубли

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

Источник Как выглядит Что делать
Два домена или протокола http://, https://, www, без www Сделать один основной вариант и 301-редирект на него
Параметры в URL ?utm_source=, ?replytocom=, сортировка, фильтры Закрыть от индексации служебные параметры, оставить canonical на чистый URL
Архивы и пагинация /category/news/page/2/ Проверить, нужны ли такие страницы в индексе, и не плодит ли тема лишние архивы
Похожие шаблоны Один пост доступен через рубрику, тег и поиск Оставить один основной URL, остальные не индексировать

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

Лучше идти от уровня сервера и настроек сайта к шаблонам и только потом к мелким исключениям. Так проще понять, где именно появилась проблема.

1. Зафиксируйте основной вариант домена

В Настройки → Общие проверьте адрес WordPress и адрес сайта. Они должны совпадать по протоколу и домену. Если сайт должен жить на https://example.com, не оставляйте там старый http или вариант с www.

Если нужен редирект на уровне сервера, используйте один вариант, а не цепочку из нескольких. Для Apache это обычно делается в .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
</IfModule>

Для Nginx логика та же, но конфиг будет другим. Важно не смешивать редирект в сервере и редирект в плагине без необходимости: лишняя цепочка ухудшает скорость и усложняет диагностику.

2. Проверьте canonical в теме и SEO-плагине

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

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

<?php
add_filter( 'get_canonical_url', function( $canonical, $post ) {
    if ( is_category() ) {
        $term = get_queried_object();
        if ( $term && ! is_wp_error( $term ) ) {
            return get_term_link( $term );
        }
    }

    return $canonical;
}, 10, 2 );

Этот подход уместен только если вы понимаете, какой URL должен быть основным. Не подменяйте canonical наугад: если страница реально уникальна, каноникал должен указывать на неё же.

3. Закройте служебные параметры и мусорные URL

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

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

<?php
add_filter( 'comment_reply_link', function( $link ) {
    return preg_replace( '/([?&])replytocom=\d+(&|$)/', '$1', $link );
} );

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

Когда достаточно плагина, а когда нужен код

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

Ниже — практическое сравнение подходов:

Подход Плюсы Минусы
SEO-плагин Быстро, удобно для canonical, robots, архивов Не решает ошибки темы и серверных редиректов
Код в теме/мини-плагине Точечный контроль, можно исправить конкретный шаблон Нужна аккуратность, легко сломать логику при обновлении
Редиректы на сервере Быстро и надежно для домена и протокола Не подходит для всех типов дублей

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

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

  • Откройте старый URL и убедитесь, что он отдает 301 на нужный адрес.
  • Посмотрите исходный код и проверьте, что canonical один.
  • Проверьте, что в <head> нет лишних meta robots и повторяющихся тегов.
  • В Search Console отправьте на проверку основной URL и сравните выбранный Google canonical.
  • Если меняли редиректы, очистите кеш страницы и CDN, иначе будете смотреть на старую версию.

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

curl -I https://example.com/old-url/

В ответе должен быть понятный статус: либо 301 Moved Permanently, либо 200 OK для основного адреса. Если видите цепочку из нескольких редиректов, её стоит сократить.

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

Два canonical в одной странице

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

Редирект через 302 вместо 301

Временный редирект не передает сигнал о постоянном переносе адреса. Для смены основного URL нужен именно 301. Иначе поисковик может продолжать держать в индексе старую версию.

Закрыли от индексации не тот URL

Иногда пытаются поставить noindex на основную страницу вместо параметрической версии. Это ошибка: основная страница должна оставаться индексируемой, а мусорный вариант — нет.

Не очистили кеш после правок

Если у вас стоит кеш-плагин или серверный кеш, старый canonical и старые редиректы могут сохраняться. После изменений очистите кеш плагина, серверный кеш и CDN, если он есть.

Сломали пагинацию архивов

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

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

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

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

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

Мини-чек-лист перед публикацией правок

  • основной домен и протокол зафиксированы;
  • старые адреса отдают 301 на нужный URL;
  • на странице один canonical;
  • служебные параметры не создают индексируемые дубли;
  • кеш очищен на всех уровнях;
  • основные URL проверены в Search Console.

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

Как отключить архив авторов в WordPress без потери индексации
01.10.2026
Как добавить пользовательские поля в WordPress без плагинов
29.09.2026
Как удалить пустые мета данные в WordPress для оптимизации базы данных
28.09.2026
Как удалить загрузку WOFF шрифтов в WordPress для ускорения сайта
19.09.2026
Как удалить кеш в WordPress: практические методы и примеры кода
23.09.2026

Ниже мы подобрали самые актуальные материалы по Вордпресс