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

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

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

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

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

Типичные признаки

  • в индексе есть и /category/news/page/2/, и /category/news/?paged=2;
  • одна и та же страница открывается с разными параметрами сортировки, фильтра или UTM;
  • в Search Console растёт число страниц, которые не несут уникального контента;
  • в исходном коде у пагинации нет корректного rel="canonical";
  • архивы с пагинацией доступны и по ЧПУ, и через query string.

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

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

Откуда берутся дубли страниц пагинации

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

Частые источники дублей

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

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

Пошаговое решение: что править в WordPress

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

Шаг 1. Оставьте один основной формат URL

Если архив уже работает на ЧПУ, не дублируйте его через параметры. Ссылки вида ?paged=2 лучше не использовать в шаблонах и виджетах, если есть нормальная пагинация через /page/2/. Для пользовательских запросов в теме или плагине ориентируйтесь на paged, а не на собственные параметры, если нет веской причины делать иначе.

<?php
$paged = max( 1, get_query_var( 'paged' ) );

$query = new WP_Query( array(
    'post_type'      => 'post',
    'posts_per_page' => 10,
    'paged'          => $paged,
) );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_title( '<h2>', '</h2>' );
    }
    wp_reset_postdata();
}
?>

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

Шаг 2. Проверьте canonical на страницах архива

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

Если тема или SEO-плагин не справляются, можно добавить свой canonical для архивов:

<?php
add_action( 'wp_head', function () {
    if ( is_archive() || is_home() || is_search() ) {
        $canonical = get_pagenum_link( max( 1, get_query_var( 'paged' ) ) );
        echo '<link rel="canonical" href="' . esc_url( $canonical ) . '" />' . "\n";
    }
}, 1 );

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

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

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

Пример для страниц с параметрами фильтра:

<?php
add_action( 'wp_head', function () {
    if ( isset( $_GET['filter'] ) || isset( $_GET['sort'] ) ) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 1 );

Важно: не ставьте noindex на все страницы пагинации подряд, если архив реально нужен для обхода и навигации. Обычно закрывают именно параметрические копии, а не нормальные страницы /page/2/.

Шаг 4. Уберите лишние варианты URL на уровне редиректов

Если сайт уже накопил дубли, одних мета-тегов мало. Нужны 301-редиректы с неканонических вариантов на основной адрес. Это особенно актуально для старых URL с query string.

Пример редиректа с ?paged=2 на ЧПУ-версию лучше делать аккуратно и только для понятных случаев:

<?php
add_action( 'template_redirect', function () {
    if ( is_admin() ) {
        return;
    }

    if ( isset( $_GET['paged'] ) ) {
        $paged = absint( $_GET['paged'] );
        if ( $paged > 1 ) {
            $target = get_pagenum_link( $paged );
            wp_safe_redirect( $target, 301 );
            exit;
        }
    }
} );

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

Сравнение подходов: плагин, код или настройка SEO

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

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

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

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

Что смотреть вручную

  • откройте /page/2/ и убедитесь, что canonical указывает на этот же URL;
  • проверьте, что ?paged=2 редиректит на канонический адрес;
  • посмотрите исходный код страниц с фильтрами: там должен быть noindex,follow, если вы его добавляли;
  • сравните заголовки ответа сервера для канонического и неканонического URL.

Команда для быстрой проверки заголовков

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

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

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

Ставят noindex на всю пагинацию

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

Оставляют query string и ЧПУ одновременно

Если сайт отдаёт и /page/2/, и ?paged=2, поисковик будет выбирать сам, а не вы. Нужен один основной формат и редирект со второго.

Не сбрасывают глобальный запрос после кастомного WP_Query

Если в шаблоне после пользовательского запроса забыть wp_reset_postdata(), могут поехать хлебные крошки, canonical и другие элементы шаблона. Это не всегда видно сразу, но для SEO-страниц пагинации критично.

Редиректят всё подряд через template_redirect

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

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

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

  • всегда экранируйте URL через esc_url();
  • проверяйте входящие параметры через absint() и sanitize_text_field() по ситуации;
  • не добавляйте тяжёлые запросы в wp_head;
  • не создавайте отдельные индексируемые страницы для каждого параметра фильтра без стратегии;
  • после правок очистите кеш страницы и объектный кеш, если он используется.

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

Как понять, что всё сработало

Результат считается нормальным, если у канонических страниц пагинации остался один основной адрес, параметрические копии редиректятся или закрыты от индексации, а в Search Console постепенно уменьшается число лишних URL. Быстрого эффекта в индексе может не быть: поисковику нужно время на переобход, поэтому проверяйте не только отчёты, но и фактические заголовки, canonical и HTML исходной страницы.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как сделать пагинацию для кастомных статусов записей в WordPress
01.03.2026
Как сделать пагинацию для комплексных запросов с meta-записями и таксономиями в WordPress
05.03.2026
Как создать пагинацию для комплексных запросов в WordPress с AJAX
14.02.2026
Пагинация WooCommerce не работает: причины и решение
02.05.2026
Как использовать пагинацию с AJAX и кешированием в WP-PageNavi
28.01.2026
×
Прокачай свой WordPress!

Скидка -20% на премиум темы и плагины

Воспользоваться сейчас ⋙