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

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

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

Когда проблема действительно в дублях

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

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

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

Откройте проблемный URL и посмотрите исходный код страницы. Важно найти не только <link rel="canonical">, но и понять, не дублируется ли title, description и основной текст на соседних страницах. Если canonical указывает на саму страницу, а в индексе всё равно есть копии, значит поисковик получает несколько равнозначных сигналов.

Полезно проверить:

  • есть ли у дубля свой canonical;
  • не закрыт ли нужный URL через noindex случайно;
  • не создаёт ли тема отдельные шаблоны для мобильной версии или фильтров;
  • не появляются ли URL с параметрами вроде ?amp, ?replytocom, ?utm_*.

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

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

curl -L https://example.com/category/news/ | grep -i canonical

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

Типичные источники дублей в WordPress

ИсточникКак выглядитЧто делать
Пагинация/category/news/page/2/Оставить индексируемой только при необходимости, canonical должен вести на саму страницу пагинации
Параметры URL?replytocom=1, ?utm_source=...Нормализовать canonical, при необходимости закрыть параметрические URL
Архивы таксономийКатегории, теги, авторыУдалить слабые архивы из индекса или улучшить уникальность шаблонов
Дубли шаблоновОдинаковый контент на главной и в архивеПересмотреть вывод блоков в теме

Пошаговое решение: canonical, noindex и правка шаблона

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

Шаг 1. Нормализуйте canonical

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

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

add_action('wp_head', function () {
    if (!is_page('contacts')) {
        return;
    }

    echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '" />' . "\n";
}, 1);

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

Шаг 2. Закройте слабые архивы от индексации

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

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

Шаг 3. Уберите дубли из шаблона темы

Иногда проблема не в SEO, а в самой теме. Например, на главной выводится полный текст записи, а в архиве — тот же текст без изменений. В таком случае поисковик получает два почти одинаковых документа.

Практичнее оставить в архивах только анонс и ссылку на запись. Для кастомной темы это обычно решается в шаблоне archive.php или content.php. Пример:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <div class="entry-summary">
            <?php the_excerpt(); ?>
        </div>
    </article>
<?php endwhile; endif; ?>

Если в архиве сейчас выводится the_content(), это частая причина дублей. Для архивов почти всегда безопаснее использовать the_excerpt().

Какой подход выбрать: плагин, код или правка темы

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

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

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

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

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

  • Откройте исходный код страницы и проверьте canonical.
  • Сравните title и description у основной страницы и дублей.
  • Проверьте, что закрытые архивы отдают noindex, если это было задумано.
  • Убедитесь, что пагинация не ведёт на первую страницу вместо себя.
  • Посмотрите отчёты в Google Search Console по страницам с дублирующимся canonical.

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

curl -L https://example.com/page/2/ | grep -iE 'canonical|robots|title'

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

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

Canonical указывает на главную страницу для всех архивов

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

Ставят noindex вместо решения причины

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

Вручную добавляют несколько canonical

Такое бывает, когда SEO-плагин уже выводит canonical, а разработчик добавляет второй в wp_head. В HTML должен быть один canonical. Если их два, поисковик может проигнорировать оба.

Закрывают важные страницы через robots.txt

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

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

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

С точки зрения производительности не стоит плодить тяжёлые проверки в wp_head на каждой странице. Если логика зависит от конкретного шаблона, ограничивайте её условными тегами вроде is_page(), is_category() и is_singular(). Так вы не будете выполнять лишний код на всём сайте.

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

⭐⭐⭐⭐⭐