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

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

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

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

Сначала не правьте код вслепую. Проверьте, какие URL уже живут в индексе и откуда они взялись. Обычно проблема видна в трёх местах: в Google Search Console, в логах сканирования и в исходном коде страниц.

Что искать в отчётах

  • одинаковые title у URL с разными параметрами;
  • страницы вида /category/page/2/, /category/page/3/ и так далее;
  • URL с параметрами ?sort=, ?filter=, ?orderby=, ?utm_;
  • дубли архивов тегов и рубрик, если одна и та же запись доступна через несколько путей;
  • страницы поиска, которые попали в индекс.

Быстрая проверка в браузере

Откройте проблемный URL и посмотрите исходный код. Важно проверить не только видимый текст, но и canonical, robots и заголовки ответа.

<link rel="canonical" href="https://example.com/category/post-name/" />

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

Какие дубли в WordPress встречаются чаще всего

Не все дубли одинаковы. Для одних страниц достаточно canonical, для других лучше закрыть индексацию, а некоторые URL вообще стоит редиректить на чистую версию.

СценарийЧто делатьКомментарий
Пагинация архивовcanonical на саму страницу пагинации или на первую страницу — по логике шаблонаНе путать с редиректом всех страниц на первую
Фильтры и сортировкаобычно noindex, follow или canonical на базовую страницуЕсли фильтр не нужен в поиске, не давайте ему индексироваться
UTM и служебные параметрыредирект или canonical на чистый URLДля SEO-меток лучше не плодить отдельные URL
Страницы поискаnoindex, followПоисковая выдача сайта редко должна индексироваться

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

Шаг 1. Определите тип URL

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

Например, архив категории с пагинацией обычно нужен пользователю и поисковику. А URL с ?sort=price часто нужен только для удобства навигации и не должен конкурировать с основной страницей.

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

Если у вас есть URL с параметрами, которые не несут уникального контента, можно добавить noindex, follow для таких страниц. В WordPress это удобно делать через wp_robots.

<?php
add_filter('wp_robots', function ($robots) {
    if (!empty($_GET['sort']) || !empty($_GET['filter']) || !empty($_GET['orderby'])) {
        $robots['noindex'] = true;
        $robots['follow'] = true;
    }

    return $robots;
});

Этот вариант подходит, если параметры не должны попадать в индекс, но страницы всё ещё должны открываться для пользователя и сканироваться ботом по ссылкам.

Шаг 3. Нормализуйте canonical

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

В чистом WordPress можно отдать свой canonical через wp_head, но делать это нужно аккуратно, чтобы не конфликтовать с SEO-плагином.

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

    if (!empty($_GET['sort']) || !empty($_GET['filter'])) {
        $canonical = remove_query_arg(array('sort', 'filter', 'orderby'));
        echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
    }
}, 1);

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

Шаг 4. Редиректите только то, что действительно лишнее

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

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

    $remove = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content');
    $has_utm = false;

    foreach ($remove as $param) {
        if (!empty($_GET[$param])) {
            $has_utm = true;
            break;
        }
    }

    if ($has_utm) {
        $clean_url = remove_query_arg($remove);
        wp_safe_redirect($clean_url, 301);
        exit;
    }
});

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

Если дубли создаёт тема или плагин

Иногда проблема не в настройках SEO, а в шаблоне архива или фильтрующем плагине. Например, плагин сортировки может добавлять параметры в URL, но не менять canonical. Или тема может выводить одинаковые meta title для рубрик, тегов и архивов автора.

В таких случаях сначала проверьте:

  • не подключает ли тема собственный <link rel="canonical">;
  • не дублируется ли meta title через SEO-плагин и код темы;
  • не создаёт ли фильтр отдельные URL для каждого клика;
  • не индексируются ли страницы поиска и внутренние результаты фильтрации.

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

Как проверить, что исправление сработало

После внедрения не ограничивайтесь визуальной проверкой. Нужны три контрольные точки.

1. Исходный код страницы

Проверьте, что на проблемных URL остался один canonical и что robots соответствует задаче. Для параметрических страниц должен быть либо noindex, либо canonical на чистую версию.

2. Ответ сервера

Если вы делали редирект, проверьте код ответа:

curl -I "https://example.com/category/?utm_source=test"

В ответе должен быть 301 и заголовок Location с чистым URL. Если вместо этого возвращается 200, редирект не сработал или условие слишком узкое.

3. Индексация и сканирование

В Search Console проверьте, как Google видит canonical и какие URL считает дубликатами. Если проблема была в параметрах, они не исчезнут мгновенно, но новые версии должны перестать накапливаться.

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

  • Ставят noindex на все архивы подряд. В результате из индекса пропадают и полезные страницы. Исправление: разделите архивы по типу, не закрывайте всё одной настройкой.
  • Делают 301 с пагинации на первую страницу. Это ломает навигацию и может ухудшить обход контента. Исправление: пагинацию не редиректить, а настраивать canonical и мета-robots по ситуации.
  • Оставляют два canonical одновременно. Обычно это конфликт темы и SEO-плагина. Исправление: найдите, кто именно выводит canonical, и отключите дублирующий источник.
  • Закрывают параметры, которые реально меняют контент. Если фильтр формирует уникальную страницу, noindex может быть не лучшим вариантом. Исправление: сначала оцените, есть ли у URL самостоятельная ценность.
  • Редиректят UTM без проверки аналитики. Иногда это мешает отслеживанию кампаний. Исправление: редиректите только после того, как понимаете, как у вас собираются данные.

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

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

Если на сайте много параметров, не пишите тяжёлую логику на каждом хите. Проверки должны быть простыми: один проход по массиву параметров, без запросов к базе и без сложных вычислений. Для редиректов используйте wp_safe_redirect(), а не произвольный header(), чтобы не открывать лишние риски.

И ещё один практический момент: не пытайтесь «лечить» дубли только через robots.txt. Это не убирает URL из индекса, если они уже известны поисковику. Для таких задач нужны canonical, noindex или редирект — в зависимости от сценария.

Когда лучше не писать код вручную

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

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

Как создать автоматические редиректы в WordPress без плагинов
25.09.2026
Как убрать дубли страниц пагинации в WordPress и сохранить полезные разделы
06.10.2026
Как использовать WPCommunity для создания социальной сети на WordPress
13.09.2026
Как удалить каскадно удалённые посты в WordPress
08.09.2026
Как найти и убрать дубли страниц в WordPress без потери индексации
15.08.2026