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

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

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

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

Сначала стоит не править код, а посмотреть, какие URL реально индексируются и откуда они взялись. Часто в Search Console видно, что одна и та же страница присутствует с параметрами, с пагинацией, с разными слэшами или с http/https-версией. Если сайт большой, вручную это не отловить.

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

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

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

Диагностика: где WordPress создаёт дубли

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

Параметры в URL

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

Пагинация архивов

Страницы /page/2/, /page/3/ и дальше не всегда являются проблемой. Но если у вас тонкий архив, слабая структура рубрик или дублирующийся список записей, поисковик может считать такие страницы почти одинаковыми. Тогда нужно смотреть не только на мета-теги, но и на саму архитектуру архива.

Таксономии и архивы автора

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

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

Лучше идти от простого к сложному: сначала убрать дубли на уровне индексации, потом на уровне ссылок и только потом — на уровне шаблонов и серверных правил. Так проще отследить, что именно сработало.

Шаг 1. Настройте canonical для страниц с параметрами

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

<?php
add_filter('wpseo_canonical', function ($canonical) {
    if (empty($_SERVER['REQUEST_URI'])) {
        return $canonical;
    }

    $request_uri = wp_unslash($_SERVER['REQUEST_URI']);
    $parts = wp_parse_url(home_url($request_uri));

    if (empty($parts['path'])) {
        return $canonical;
    }

    $path = $parts['path'];
    $url = home_url($path);

    return user_trailingslashit($url);
});

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

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

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

<?php
add_filter('wp_robots', function (array $robots) {
    if (empty($_SERVER['REQUEST_URI'])) {
        return $robots;
    }

    $query = wp_unslash($_SERVER['QUERY_STRING'] ?? '');

    if ($query === '') {
        return $robots;
    }

    parse_str($query, $params);

    foreach (array_keys($params) as $key) {
        if (str_starts_with($key, 'utm_') || in_array($key, ['sort', 'filter', 'orderby'], true)) {
            $robots['noindex'] = true;
            $robots['follow'] = true;
            break;
        }
    }

    return $robots;
});

Этот подход удобен тем, что не ломает аналитику и не мешает пользователю переходить по ссылкам. Но он не заменяет canonical: если URL уже успел попасть в индекс, лучше исправлять оба уровня.

Шаг 3. Не плодите дубли в навигации и шаблонах

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

Проверьте:

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

Шаг 4. Уберите лишние архивы, если они не нужны

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

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

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

ПодходКогда подходитПлюсМинус
SEO-плагинСтандартные дубли, UTM, архивыБыстро и без правки темыНе всегда хватает гибкости
Код в мини-плагинеНестандартные параметры и логикаТочный контрольНужно тестировать после обновлений
Серверные правилаРедиректы и жёсткая нормализация URLРешает проблему до WordPressЛегко сломать рабочие адреса

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

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

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

Что проверить руками

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

Мини-проверка через curl

curl -I "https://example.com/post/?utm_source=test"
curl -s "https://example.com/post/?utm_source=test" | grep -iE "canonical|robots"

Если в ответе canonical указывает на чистую страницу, а robots содержит нужную директиву, базовая настройка работает. Дальше проверьте несколько типов URL: запись, рубрику, архив с пагинацией и страницу поиска.

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

Canonical указывает на несуществующую или закрытую страницу

Это часто происходит после массовой правки URL или при конфликте плагинов. Исправление простое: canonical должен вести на индексируемую, доступную и конечную версию страницы. Если он ведёт на редирект, поисковик может игнорировать его.

Всё закрыли через noindex, но дубли остались

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

Параметры UTM попали в sitemap

Такого быть не должно. Sitemap должен содержать только канонические URL. Если туда попадают параметры, проверьте генератор карты сайта, кеш и фильтры, которые меняют адреса на лету.

Сломалась пагинация архивов

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

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

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

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

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

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

Как убрать дубли страниц в WordPress от фильтров, пагинации и UTM-параметров
15.09.2026
Как отключить XML Sitemap в WordPress и заменить его своим
19.09.2026
Как запретить индексацию технических страниц в WordPress
15.09.2026
×
Прокачай свой сайт WordPress!

WordPress

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

Создай сайт своей мечты ⋙