Как найти и отключить дублирующиеся ссылки пагинации в WordPress

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

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

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

Сначала стоит убедиться, что речь не о другом типе дублей. Если у вас одинаковые статьи доступны по разным адресам из-за http/https, www/без www, параметров сортировки или UTM-меток, это отдельная история. Дубли пагинации — это когда у архивов, рубрик, меток или блога есть несколько страниц вида /page/2/, /page/3/, а рядом появляются альтернативные URL, которые ведут на тот же контент или почти на тот же набор записей.

Типичные симптомы

  • в Google Search Console растёт число страниц типа /page/2/, /page/3/ с разными статусами;
  • в выдаче появляются архивы с параметрами, хотя вы их не планировали;
  • страницы пагинации получают трафик, но не дают полезного входа пользователю;
  • в исходном коде у разных URL стоит один и тот же canonical или, наоборот, canonical отсутствует;
  • robots.txt не помогает, потому что проблема не в обходе, а в генерации лишних адресов.

Диагностика: где искать лишние URL

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

Полезно посмотреть исходный код страницы и найти такие элементы:

  • <link rel="canonical" ...>;
  • <meta name="robots" content="noindex,follow"> или похожую комбинацию;
  • ссылки пагинации в блоке навигации архива;
  • дублирующиеся ссылки в хлебных крошках, если тема их генерирует неправильно.

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

curl -I https://example.com/category/news/page/2/

А сам canonical проще смотреть в HTML:

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

Если canonical указывает на первую страницу архива, это не всегда ошибка. Для некоторых типов архивов это нормальная стратегия. Но если поисковик индексирует и первую страницу, и пагинацию, и ещё варианты с параметрами, нужно убрать лишние пути и оставить одну понятную схему.

Что именно отключать: сравнение подходов

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

ПодходКогда подходитМинус
Исправить canonicalЕсли дубли создаются разными URL одной и той же страницыНе убирает сам источник дублей
noindex,follow для пагинацииЕсли страницы 2+ не нужны в индексе, но должны работать для пользователяНужно аккуратно внедрять, чтобы не закрыть лишнее
Убрать параметры и лишние ссылки на уровне шаблонаЕсли тема или плагин генерируют мусорные URLТребует правки кода и тестирования

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

1. Приведите canonical к одной версии

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

add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_admin() || ! $post instanceof WP_Post) {
        return $canonical;
    }

    if (is_paged() && is_archive()) {
        return home_url(add_query_arg([], get_pagenum_link(get_query_var('paged'))));
    }

    return $canonical;
}, 10, 2);

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

2. Закройте пагинацию от индексации, если она не несёт ценности

Если страницы /page/2/ и дальше не должны попадать в индекс, добавьте noindex,follow только для архивов и пагинации. Делать это лучше через wp_robots, а не через грубую правку шаблона. Так решение будет работать и в классической теме, и в большинстве современных конфигураций:

add_filter('wp_robots', function (array $robots) {
    if (is_paged() && (is_archive() || is_home() || is_search())) {
        $robots['noindex'] = true;
        $robots['follow'] = true;
    }

    return $robots;
});

Если у вас уже подключён SEO-плагин, проверьте, не конфликтует ли он с этим фильтром. Два источника robots-мета на одной странице — частая причина странного поведения в индексации.

3. Уберите параметры, которые создают дубли

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

Пример для генерации ссылок без лишних параметров:

$base = trailingslashit(get_pagenum_link(1));
$format = user_trailingslashit('page/%#%/', 'paged');

echo paginate_links([
    'base'      => $base . '%_%',
    'format'    => $format,
    'current'   => max(1, get_query_var('paged')),
    'total'     => $wp_query->max_num_pages,
    'add_args'  => false,
    'type'      => 'list',
]);

Ключевой момент здесь — 'add_args' => false. Если его не отключить, пагинация может унаследовать параметры текущего запроса и размножить URL.

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

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

  • Откройте страницу архива и убедитесь, что canonical указывает на нужный адрес.
  • Проверьте, что для страниц пагинации есть noindex,follow, если вы его добавляли.
  • Посмотрите, не остались ли в ссылках параметры вроде ?utm_, ?sort= и аналогичные.
  • Пройдите по ссылке на вторую страницу архива и убедитесь, что она открывается без редиректов на первую страницу.
  • Сравните исходный HTML первой и второй страницы: они не должны быть одинаковыми по canonical и robots.

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

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

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

Это ломает смысл пагинации, если вы хотите, чтобы страницы 2+ были доступны пользователю и корректно воспринимались поисковиком. Исправление — отдавать реальный URL текущей страницы или осознанно закрывать пагинацию от индексации, если она не нужна.

Пагинация закрыта через robots.txt

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

Сломаны ссылки после правки шаблона

Часто это происходит, когда разработчик вручную меняет paginate_links(), но не учитывает текущую структуру постоянных ссылок. Если сайт работает в поддиректории, с нестандартным префиксом или на мультиязычности, тестируйте несколько реальных архивов, а не один пример.

SEO-плагин и код делают одно и то же

Если Yoast SEO, Rank Math или другой плагин уже управляет canonical и robots, не дублируйте логику в теме без необходимости. Иначе получите конфликт: один код ставит noindex, другой возвращает индексируемую страницу, и итог зависит от порядка вывода.

Что проверить в первую очередь на живом сайте

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

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

Если вы вносите правки через functions.php, лучше сначала вынести их в небольшой mu-plugin или отдельный мини-плагин. Так вы не потеряете изменения при обновлении темы и сможете быстро отключить логику, если что-то пойдёт не так. Для сайтов с кешированием обязательно очищайте не только страницу, но и серверный кеш, и CDN, если он есть.

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

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

Как избежать конфликтов между плагинами в WordPress: практические советы и решения
13.12.2025
Как удалить пустые категории в WordPress
24.03.2026
Как найти и отключить дублирующиеся ссылки пагинации в WordPress
31.08.2026
Как установить ограничения на регистрацию в WordPress по домену email
10.04.2026
Как автоматически обновлять атрибуты товаров WooCommerce по расписанию
23.07.2026