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

Дубли пагинации в WordPress обычно всплывают не сразу: сайт уже в индексе, а потом в Search Console появляются одинаковые title и description у страниц архивов, категорий или блога. Чаще всего проблема не в самой пагинации, а в том, как тема или плагин формируют заголовки, canonical и ссылки на страницы списка.

Если у вас уже есть статьи про закрытие дублей через robots.txt и noindex, то здесь задача другая: не прятать пагинацию от поисковиков, а убрать технические дубли так, чтобы страницы 2, 3, 4 оставались доступными и корректно индексировались.

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

Сначала проверьте не ощущения, а факты. Откройте несколько архивов и сравните:

  • URL первой страницы и URL второй страницы архива;
  • <title> и meta name="description" на разных страницах пагинации;
  • rel="canonical" на страницах /page/2/, /page/3/ и т.д.;
  • не отдает ли сервер одну и ту же страницу по нескольким адресам, например с лишним слешем, параметрами или через старый URL после редиректа.

Типичный симптом — в индексе оказываются почти одинаковые страницы вида /category/news/ и /category/news/page/2/, а canonical у обеих указывает на первую страницу. Для поисковика это сигнал, что вторая страница не самостоятельная, хотя на ней есть уникальный набор записей.

Что проверить в исходном коде

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

<link rel="canonical" href="https://example.com/category/news/page/2/" />

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

Почему дубли появляются в WordPress

На практике причин немного, и почти все они связаны с шаблоном или SEO-логикой темы:

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

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

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

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

  • первая страница архива — индексируется;
  • страницы пагинации — тоже доступны и могут индексироваться, если на них есть уникальный набор записей;
  • canonical на каждой странице должен быть сам на себя;
  • title должен отличать страницу 2 от страницы 1.

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

Вариант 1: поправить canonical для архивов

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

add_filter( 'wpseo_canonical', function( $canonical ) {
    if ( is_paged() && ( is_category() || is_tag() || is_post_type_archive() ) ) {
        $paged = max( 2, get_query_var( 'paged' ) );
        $base  = get_pagenum_link( $paged );

        return $base;
    }

    return $canonical;
} );

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

Вариант 2: сделать title уникальным для страниц пагинации

Если title одинаковый, добавьте номер страницы. Это можно сделать через фильтр document_title_parts, который работает в ядре WordPress.

add_filter( 'document_title_parts', function( $parts ) {
    if ( is_paged() ) {
        $paged = max( 2, get_query_var( 'paged' ) );
        $parts['title'] .= ' — Страница ' . $paged;
    }

    return $parts;
} );

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

Вариант 3: убрать альтернативные URL пагинации

Иногда проблема не в дублировании контента, а в том, что один и тот же список доступен по нескольким адресам. Например, через параметры ?paged=2, через красивый URL /page/2/ и через старый редирект. В этом случае нужно оставить один канонический вариант и настроить 301-редиректы с остальных.

Если вы работаете на Apache, правило может выглядеть так:

RewriteCond %{QUERY_STRING} (^|&)paged=([0-9]+)(&|$)
RewriteRule ^category/([^/]+)/?$ /category/$1/page/%2/? [R=301,L]

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

Сравнение подходов

СпособКогда подходитМинус
Исправить canonicalcanonical указывает на первую страницу вместо текущейНужно понимать, кто именно его генерирует: тема или SEO-плагин
Добавить номер страницы в titletitle одинаковый на всех страницах архиваНе решает проблему, если canonical уже неверный
Редиректы с альтернативных URLЕсть несколько адресов одной пагинацииМожно случайно сломать рабочие ссылки и фильтры

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

После правок не ограничивайтесь просмотром страницы в браузере. Проверьте несколько вещей:

  • canonical на страницах /page/2/, /page/3/ и т.д. указывает на текущий URL;
  • title отличается от первой страницы архива;
  • страницы пагинации отдают код ответа 200, а не редирект на первую страницу;
  • внутренние ссылки на пагинацию ведут на один формат URL;
  • в Search Console в отчете по страницам нет массовых дублей с одинаковыми метаданными.

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

curl -I https://example.com/category/news/page/2/
curl -s https://example.com/category/news/page/2/ | grep -i canonical

Если canonical и title уже исправлены, но в индексе старые данные, это нормально: поисковику нужно время на переобход. Не делайте резких массовых изменений в robots.txt или noindex, если цель — сохранить индексацию пагинации.

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

Canonical ведет на первую страницу архива

Обычно это делает SEO-плагин или кастомный код темы. Проверьте, нет ли в functions.php фильтров, которые подменяют canonical для всех архивов без учета is_paged().

Страницы пагинации закрыты от индексации через noindex

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

Пагинация генерирует дубли с параметрами

Если ссылки строятся через query string, проверьте настройки темы и плагинов фильтрации. Часто достаточно переключиться на ЧПУ-пагинацию и убрать лишние параметры из ссылок.

После правок сломались архивы

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

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

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

Еще один практический момент — кэш. После изменения canonical, title или редиректов очистите:

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

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

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

⭐⭐⭐⭐⭐