wpbook.ru wordpress WP Book

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

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

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

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

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

Чаще всего дубли появляются в таких сценариях:

  • страницы с сортировкой вида ?sort=popular или ?orderby=date;
  • фильтры каталога с параметрами ?color=black, ?size=m;
  • поиск по сайту через ?s=...;
  • UTM-метки и рекламные параметры;
  • страницы пагинации, если они дублируют первую страницу архива;
  • служебные параметры плагинов, которые меняют только интерфейс.

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

Сначала нужно понять, какие именно URL индексируются и как они отличаются от основной страницы. Самый быстрый путь — посмотреть отчёты в Google Search Console и пройтись по логам или краулеру. Если у вас есть доступ к Screaming Frog или аналогичному сканеру, проверьте:

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

Полезно отдельно проверить, как ведут себя параметры в браузере. Например, если /blog/?sort=popular и /blog/?sort=date показывают один и тот же набор записей, но в разном порядке, это почти всегда кандидат на каноникал к основной странице. Если же параметр меняет состав выдачи и эта выдача нужна пользователю, можно оставить страницу доступной, но не плодить лишние варианты.

Что смотреть в исходном коде страницы

Откройте HTML и проверьте три вещи: <link rel="canonical">, мета-robots и ссылки внутри шаблона. Часто проблема не в SEO-плагине, а в теме или кастомном шаблоне, который генерирует ссылки с параметрами без очистки. Если в меню, хлебных крошках или блоках фильтрации постоянно добавляются UTM-параметры, это уже техническая ошибка, а не SEO-настройка.

Пошаговое решение без поломки сайта

Универсального рецепта нет, поэтому удобнее идти по слоям: сначала убрать мусор из ссылок, потом настроить каноникал, а затем при необходимости добавить редиректы для совсем лишних вариантов.

1. Не передавайте служебные параметры в внутренние ссылки

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

<a href="<?php echo esc_url( home_url( '/blog/' ) ); ?>">Все статьи</a>

Если ссылка строится динамически, проверьте, не склеивает ли код текущий запрос с параметрами без фильтрации. Для случаев, когда нужно сохранить только безопасные параметры, можно явно собрать URL через add_query_arg(), но не тащить туда всё подряд.

<?php
$base_url = home_url( '/blog/' );
$url = add_query_arg(
    array(
        'sort' => 'popular',
    ),
    $base_url
);
echo esc_url( $url );

2. Назначьте канонический URL для страниц с параметрами

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

<?php
add_filter( 'get_canonical_url', function( $canonical, $post ) {
    if ( is_admin() ) {
        return $canonical;
    }

    if ( isset( $_GET['utm_source'] ) || isset( $_GET['utm_medium'] ) || isset( $_GET['utm_campaign'] ) ) {
        return remove_query_arg( array( 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content' ), home_url( add_query_arg( array(), $GLOBALS['wp']->request ) ) );
    }

    return $canonical;
}, 10, 2 );

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

3. Закройте ненужные параметры редиректом или 404

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

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

    $bad_params = array( 'ref', 'source', 'campaign' );

    foreach ( $bad_params as $param ) {
        if ( isset( $_GET[ $param ] ) ) {
            wp_safe_redirect( remove_query_arg( $bad_params ), 301 );
            exit;
        }
    }
} );

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

4. Для фильтров каталога решите: индексировать или нет

Фильтры — самый спорный участок. Если фильтр создаёт полезную посадочную страницу с устойчивым спросом, её можно оставить в индексе и оформить как отдельную страницу. Если же фильтр просто меняет набор карточек без самостоятельной ценности, лучше не плодить индексируемые комбинации.

Практически это выглядит так:

ПодходКогда использоватьМинус
Каноникал на основную страницуСортировки, UTM, служебные параметрыФильтр не получает SEO-веса
301-редиректМусорные или устаревшие параметрыПользователь теряет исходный URL
Оставить в индексеПолезные посадочные страницы фильтраНужно следить за уникальностью и качеством контента

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

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

  • Откройте URL с параметром и убедитесь, что canonical указывает на нужную страницу.
  • Проверьте HTTP-статус: лишние параметры должны либо редиректиться, либо отдавать предсказуемый ответ.
  • Сравните заголовок страницы и title у чистой версии и у версии с параметром.
  • В Search Console отправьте на переобход несколько типовых URL и посмотрите, как они попадают в индекс.
  • Если используете краулер, сравните количество URL с параметрами до и после правок.

Если всё сделано правильно, в отчётах станет меньше мусорных адресов, а в индексе останутся только те страницы, которые действительно нужны. Для UTM и сортировок это обычно видно довольно быстро, но для фильтров и архивов может понадобиться время на переобход.

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

Закрыли параметры в robots.txt и ждёте исчезновения дублей

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

Поставили noindex на важные страницы фильтра

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

Оставили UTM в каноникале

Канонический URL с UTM-параметрами — плохая практика. Поисковик может считать такие адреса разными версиями одной страницы, а аналитика начнёт засорять отчёты. Каноникал должен вести на чистый адрес без рекламных меток.

Сделали 301 на всё подряд

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

Что проверить в теме и плагинах

Иногда дубли создаёт не SEO-плагин, а тема или плагин фильтрации. Проверьте:

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

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

Мини-чек-лист перед публикацией правок

  • Проверил, какие параметры реально нужны пользователю.
  • Убрал служебные параметры из внутренних ссылок.
  • Настроил каноникал для страниц, которые не должны индексироваться отдельно.
  • Добавил точечные 301-редиректы для мусорных URL.
  • Проверил статус-коды и canonical на чистой и параметризованной версии.
  • Отправил несколько URL на переобход в Search Console.

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее