WordPress Notes WPDream

Как настроить canonical и noindex для страниц пагинации WordPress

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

Задача здесь не в том, чтобы «запретить всё подряд», а в том, чтобы оставить поисковику понятную основную страницу архива и аккуратно обработать страницы /page/2/, /page/3/ и дальше. Для этого обычно достаточно правильно настроить canonical и, если нужно, noindex для пагинированных страниц.

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

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

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

  • в Google Search Console появляются URL вида /category/news/page/2/ и дальше;
  • в выдаче видны страницы пагинации вместо первой страницы архива;
  • в отчётах по дублям много URL с одинаковым title и похожим description;
  • SEO-плагин ставит canonical на саму страницу пагинации, а не на первую страницу архива;
  • на сайте есть фильтрация или сортировка, и пагинация начинает плодить почти одинаковые страницы.

Что проверить до правок

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

Какой вариант выбрать: canonical, noindex или оба

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

ПодходКогда уместенКомпромисс
Только canonicalНужно показать поисковику основную страницу серииПагинация всё ещё может попадать в индекс
Только noindexНужно убрать из индекса вторые и последующие страницыСигнал на первую страницу передаётся не всегда так, как ожидается
canonical + noindexНужен более жёсткий контроль индексацииВажно не закрыть полезные страницы по ошибке

Пошаговая настройка через код

Если SEO-плагин не даёт нужного результата или вы хотите контролировать логику вручную, можно добавить фильтры в functions.php дочерней темы или в небольшой mu-plugin. Ниже пример, который ставит canonical на первую страницу архива и добавляет noindex,follow для страниц пагинации больше первой.

<?php
add_filter( 'wpseo_canonical', function( $canonical ) {
    if ( is_paged() && ( is_category() || is_tag() || is_author() || is_post_type_archive() || is_home() ) ) {
        $paged = max( 1, get_query_var( 'paged' ) );

        if ( $paged > 1 ) {
            if ( is_category() || is_tag() || is_author() ) {
                $term_link = get_term_link( get_queried_object() );
                if ( ! is_wp_error( $term_link ) ) {
                    return $term_link;
                }
            }

            if ( is_home() ) {
                return home_url( '/' );
            }

            if ( is_post_type_archive() ) {
                $post_type = get_query_var( 'post_type' );
                return get_post_type_archive_link( $post_type );
            }
        }
    }

    return $canonical;
} );

add_filter( 'wpseo_robots', function( $robots ) {
    if ( is_paged() && ( is_category() || is_tag() || is_author() || is_post_type_archive() || is_home() ) ) {
        $paged = max( 1, get_query_var( 'paged' ) );
        if ( $paged > 1 ) {
            return 'noindex,follow';
        }
    }

    return $robots;
} );

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

Если SEO-плагина нет

Можно вывести canonical и robots напрямую через wp_head. Это менее удобно, но работает в чистом WordPress.

<?php
add_action( 'wp_head', function() {
    if ( ! is_paged() ) {
        return;
    }

    $paged = max( 1, get_query_var( 'paged' ) );
    if ( $paged <= 1 ) {
        return;
    }

    if ( is_category() || is_tag() || is_author() ) {
        $link = get_term_link( get_queried_object() );
        if ( ! is_wp_error( $link ) ) {
            echo '<link rel="canonical" href="' . esc_url( $link ) . '" />' . "\n";
        }
    } elseif ( is_home() ) {
        echo '<link rel="canonical" href="' . esc_url( home_url( '/' ) ) . '" />' . "\n";
    }

    echo '<meta name="robots" content="noindex,follow" />' . "\n";
}, 1 );

Вручную выводить мета-теги стоит только если вы понимаете, как они сочетаются с темой и SEO-плагином. Два canonical на одной странице — частая ошибка, и поисковик в таком случае может выбрать не тот вариант.

Диагностика после внедрения

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

  • Откройте страницу пагинации, например /category/news/page/2/.
  • Посмотрите исходный код и убедитесь, что canonical указывает на первую страницу архива.
  • Проверьте, что на второй и последующих страницах есть meta robots с noindex,follow, если это было задумано.
  • Прогоните URL через проверку в Google Search Console и сравните, какой canonical выбран системой.
  • Очистите кэш страницы, если сайт использует плагин кэширования или reverse proxy.

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

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

Canonical указывает на саму страницу пагинации

Такое часто происходит, если SEO-плагин не переопределён, а тема выводит стандартный canonical для текущего URL. Исправление простое: для страниц /page/2/ и дальше canonical должен вести на первую страницу серии, а не на текущий URL.

Закрыли от индексации все архивы целиком

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

Два SEO-решения конфликтуют между собой

Например, один плагин ставит canonical, другой — свои robots-мета-теги, а тема ещё и вручную добавляет мета-теги в wp_head. В итоге в HTML появляется несколько противоречивых инструкций. Оставьте один источник правды: либо SEO-плагин, либо собственный код.

Кэш не обновился после правки

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

Чек-лист перед публикацией

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

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

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

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее