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

Проблема с параметрами URL в WordPress обычно выглядит одинаково: одна и та же страница открывается по нескольким адресам, а поисковик начинает индексировать версии с ?utm_source=, ?sort=, ?filter= или внутренним поиском. В результате в индексе появляются дубли, расходуется краулинговый бюджет, а в отчетах по страницам сложно понять, какой URL считать основным.

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

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

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

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

  • отчеты Google Search Console по индексированным страницам и дублирующимся URL;
  • серверные логи или логи аналитики: какие параметры чаще всего встречаются у ботов;
  • результаты поиска по сайту и внутренние фильтры, если они генерируют отдельные URL;
  • страницы с UTM-метками, которые случайно попали в sitemap или были перелинкованы внутри сайта.

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

Какие параметры можно закрывать, а какие лучше оставить

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

ПодходКогда уместенПлюсыМинусы
robots.txtДля грубого ограничения обхода технических URLПросто внедритьНе убирает уже проиндексированные страницы и не управляет canonicals
meta robots noindexДля страниц, которые должны открываться, но не индексироватьсяПонятно для поисковиковНужен доступ бота к странице
canonicalЕсли параметр не меняет основной контентСохраняет сигнал на основную страницуНе всегда достаточно для мусорных URL
Код в теме или плагинеКогда нужна точная логика по параметрамГибко и предсказуемоТребует проверки и поддержки

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

Пошаговое решение: закрываем параметры URL через WordPress

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

Шаг 1. Определите список параметров

Сначала выпишите все параметры, которые реально создают дубли: utm_*, gclid, fbclid, sort, filter, page, s для внутреннего поиска. Не добавляйте в список все подряд: если параметр меняет содержимое страницы и нужен пользователю, его нужно проверять отдельно.

Шаг 2. Добавьте логику noindex для страниц с параметрами

Ниже пример для functions.php дочерней темы или для собственного мини-плагина. Он ставит noindex,follow на страницы с типичными маркетинговыми и техническими параметрами, но не трогает саму основную страницу без параметров.

<?php
add_filter('wp_robots', function( $robots ) {
    $params = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'gclid', 'fbclid', 'sort', 'filter');

    foreach ( $params as $param ) {
        if ( isset($_GET[$param]) && $_GET[$param] !== '' ) {
            $robots['noindex'] = true;
            $robots['follow']   = true;
            break;
        }
    }

    return $robots;
});

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

Шаг 3. Добавьте canonical на основную версию

Если параметр не меняет содержимое, canonical должен указывать на чистый URL без query string. В WordPress это можно сделать через фильтр wpseo_canonical в Yoast SEO или через общий вывод canonical в теме, если SEO-плагина нет.

<?php
add_filter('get_canonical_url', function( $canonical, $post ) {
    if ( is_singular() && ! empty($_GET) ) {
        return get_permalink( $post );
    }

    return $canonical;
}, 10, 2);

Если у вас уже установлен SEO-плагин, проверьте, не генерирует ли он canonical сам. Дублировать логику в двух местах не стоит: можно получить конфликт и неправильный тег на странице.

Шаг 4. Ограничьте обход в robots.txt только для явного мусора

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

User-agent: *
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?utm_
Disallow: /*?fbclid=
Disallow: /*?gclid=

Это не универсальное правило для всех сайтов. Перед внедрением проверьте, как ваш сервер и CMS обрабатывают такие шаблоны. На некоторых конфигурациях лучше ограничиться noindex и canonical, а robots использовать только для самых шумных адресов.

Если нужен более точный контроль: отдельная обработка поиска и фильтров

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

<?php
add_filter('wp_robots', function( $robots ) {
    if ( is_search() ) {
        $robots['noindex'] = true;
        $robots['nofollow'] = false;
        return $robots;
    }

    if ( isset($_GET['filter']) || isset($_GET['sort']) ) {
        $robots['noindex'] = true;
        $robots['follow']   = true;
    }

    return $robots;
});

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

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

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

  • откройте URL с параметром и проверьте в исходном коде наличие <meta name="
Как создать динамическую таблицу с фильтрами в WordPress для удобного отображения данных
23.09.2026
Как закрыть страницы поиска WordPress от индексации без поломки внутреннего поиска
10.09.2026
Как создать автоматическую синхронизацию данных WordPress и внешних источников с помощью REST API
26.09.2026
Как найти и убрать дубли страниц WordPress с каноническими URL
27.08.2026
Эффективная синхронизация данных между WordPress и внешними источниками с WPData
23.09.2026