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

Если в индексе начали появляться URL вида ?sort=price, ?filter_color=blue, ?orderby=menu_order или похожие вариации, проблема обычно не в самом WordPress, а в том, как тема, плагин фильтрации или поиск формируют ссылки. Поисковик видит десятки почти одинаковых страниц, а вы получаете размытый краулинговый бюджет и дубли в отчётах.

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

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

Сначала проверьте, какие URL реально попали в индекс или в обход поискового робота. Для этого достаточно посмотреть:

  • отчёт «Страницы» в Google Search Console;
  • логи сервера или статистику обхода, если они доступны;
  • поиск по сайту через site:example.com с типичными параметрами;
  • HTML исходник страниц фильтрации: есть ли там каноникал, мета robots и ссылки с параметрами в навигации.

Типичный признак проблемы: одна и та же категория доступна как /catalog/, /catalog/?sort=price, /catalog/?filter_size=m, /catalog/?utm_source=.... Если такие адреса отдаются с кодом 200 и не нормализуются, поисковик может индексировать их как отдельные страницы.

Что считать нормальным, а что — лишним

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

ПодходКогда подходитМинус
robots.txtДля массового отсечения шаблонных параметров и мусорных URLНе убирает уже проиндексированные страницы
noindex, followЕсли страницу нужно оставить доступной, но не показывать в поискеРоботу всё равно нужно зайти на страницу
canonicalЕсли есть основная версия страницы и вариации должны указывать на неёНе всегда спасает, если URL сильно отличаются по содержимому
Убрать генерацию параметровЕсли фильтр не нужен для SEO и создаёт мусорНужно править тему или плагин

Диагностика: где именно рождаются лишние URL

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

  • Проверьте шаблоны архива и категорий: не добавляет ли тема сортировку через GET-параметры.
  • Посмотрите настройки плагина фильтров: многие дают опцию «SEO-friendly URLs», но при этом всё равно оставляют старые параметры.
  • Проверьте, не генерирует ли форма поиска URL с параметрами в адресной строке.
  • Если есть кастомный код, найдите вызовы add_query_arg() и remove_query_arg().

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

Пошаговое решение

1. Закройте мусорные параметры в robots.txt

Этот способ полезен для массовых шаблонных параметров, которые не несут ценности для поиска. Например, UTM, сортировка, служебные флаги. Важно: robots.txt не удаляет уже проиндексированные URL, он только ограничивает обход.

User-agent: *
Disallow: /*?sort=
Disallow: /*?orderby=
Disallow: /*?filter_
Disallow: /*?utm_

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

2. Добавьте noindex для страниц, которые должны открываться пользователю

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

В WordPress это можно сделать через wp_robots:

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

    return $robots;
});

Смысл простой: если в URL есть выбранные параметры фильтра, страница не должна попадать в индекс, но ссылки на ней можно продолжать обходить.

3. Укажите канонический URL на основную версию

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

add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_archive() || is_tax() || is_category()) {
        $canonical = remove_query_arg(array('sort', 'orderby', 'filter_color', 'filter_size'));
    }

    return $canonical;
}, 10, 2);

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

4. Уберите параметры из ссылок, если они не нужны

Самый чистый вариант — не порождать мусорные URL вообще. Если сортировка или фильтр не должны индексироваться и не обязаны сохраняться в адресной строке, лучше строить ссылки без GET-параметров.

$base_url = get_term_link($term);
$url = add_query_arg(array(
    'sort' => 'price',
    'filter_color' => 'blue',
), $base_url);

// Если параметр нужен только для JS, не выводите его в href.
// Передавайте значение через data-атрибут:
echo '<a href="' . esc_url($base_url) . '" data-sort="price">Сортировать по цене</a>';

Если фильтр работает на JavaScript, это часто лучший путь: пользователь получает интерактивность, а поисковик — чистый URL.

Какой способ выбрать в реальном проекте

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

Если у вас уже есть плагин фильтрации, сначала проверьте его настройки. Многие решения умеют:

  • отключать индексирование параметров;
  • ставить canonical на базовую категорию;
  • генерировать ЧПУ вместо GET-параметров;
  • скрывать служебные страницы от поисковиков.

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

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

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

  1. Откройте URL с параметром в браузере и убедитесь, что страница доступна.
  2. Посмотрите исходный код: есть ли noindex и правильный canonical.
  3. Проверьте заголовки ответа, если используете серверные правила.
  4. Сравните базовый URL и URL с параметром: не меняется ли основной контент.
  5. В Google Search Console отправьте проверку URL и посмотрите, как робот видит страницу.

Для быстрой проверки canonical и robots можно использовать такой подход:

curl -I 'https://example.com/catalog/?sort=price'

И отдельно посмотреть HTML:

curl -s 'https://example.com/catalog/?sort=price' | grep -iE 'canonical|robots'

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

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

Закрыли всё в robots.txt и ждёте удаления из индекса

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

Ставите noindex на все фильтры без разбора

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

Canonical указывает на саму себя с параметрами

Иногда тема или плагин формируют canonical из текущего URL, включая GET-параметры. Это почти бесполезно. Канонический адрес должен вести на чистую основную версию.

Параметры убрали, а ссылки в шаблоне остались

Если в меню, фильтрах или кнопках всё ещё есть старые URL, поисковик продолжит их находить. После правки проверьте не только мета-теги, но и все внутренние ссылки на странице.

Смешали SEO и аналитику

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

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

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

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

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

Устранение дублей страниц в WordPress: noindex, canonical и пагинация
13.09.2026
Как закрыть от индексации страницы автора в WordPress без поломки архива и SEO
16.09.2026