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

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

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

Когда проблема уже есть: что смотреть в первую очередь

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

Признаки, что индексация расползается

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

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

Какие URL закрывать, а какие оставить

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

Тип параметраПримерЧто делать
Аналитикаutm_source, utm_campaignНе индексировать, обычно не нужны в поиске
Сортировкаsort=priceЧаще всего закрывать от индексации
Фильтрыfilter_color=blueЗакрывать, если это не отдельные SEO-страницы
Пагинацияpaged=2Не закрывать автоматически без проверки логики архива
Поиск по сайту?s=запросОбычно закрывать от индексации

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

Пошаговое решение: закрываем параметры от индексации

Надёжный вариант — добавить логику в тему или в небольшой must-use плагин. Тогда вы контролируете, какие параметры переводят страницу в noindex, а какие нет.

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

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

Шаг 2. Добавляем мета-тег robots и canonical

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

    $blocked_params = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'sort', 'filter_color', 'filter_size', 's');
    $has_blocked_param = false;

    foreach ($blocked_params as $param) {
        if (isset($_GET[$param]) && $_GET[$param] !== '') {
            $has_blocked_param = true;
            break;
        }
    }

    if (!$has_blocked_param) {
        return;
    }

    echo '<meta name="robots" content="noindex,follow" />' . "\n";

    $canonical = remove_query_arg($blocked_params, home_url(add_query_arg(array(), $GLOBALS['wp']->request)));
    echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
}, 1);

Этот пример рабочий по логике, но его нужно адаптировать под ваш сайт. Если у вас сложные фильтры, не пытайтесь вычислять каноникал через $GLOBALS['wp']->request вслепую. Лучше брать текущий URL более предсказуемым способом и тестировать на конкретных шаблонах.

Шаг 3. Закрываем поисковые страницы

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

<?php
add_action('wp_head', function () {
    if (is_search()) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 1);

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

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

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

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

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

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

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

  • откройте URL с параметром и проверьте исходный код страницы;
  • убедитесь, что есть <meta name="robots" content="noindex,follow" />;
  • проверьте, что canonical указывает на чистый URL без параметров;
  • посмотрите отчёт в Google Search Console по страницам с параметрами;
  • сравните, не исчезли ли из индекса нужные посадочные страницы.

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

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

Здесь важно не только наличие ответа 200, но и то, как страница отдаёт мета-данные в HTML. Заголовки сами по себе не покажут canonical, поэтому дополнительно смотрите исходник.

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

Закрыли все параметры через robots.txt

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

Поставили noindex на нужные посадочные страницы

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

Каноникал ведёт на неправильный адрес

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

Параметры продолжают индексироваться из-за внутренних ссылок

Если сайт массово ссылается на URL с параметрами, поисковик будет их находить снова. Исправьте генерацию ссылок в шаблоне, а не только мета-теги. Иногда проблема сидит в меню, фильтре или JS-скрипте.

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

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

  • не генерируйте фильтры, если они не используются в реальной навигации;
  • не храните логику индексации только в одном плагине без резервного плана;
  • проверяйте, что код не ломает админку и REST-запросы;
  • не закрывайте от индексации страницы, которые приносят трафик по низкочастотным запросам;
  • если правите тему, выносите логику в дочернюю тему или mu-plugin, чтобы не потерять изменения при обновлении.

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

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

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

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

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

Как синхронизировать остатки WooCommerce с 1С через CSV-импорт без ручного обновления
12.08.2026
Как добавить поддержку WebP в WordPress: практическое руководство
14.04.2026
Как отключить attachment-страницы в WordPress и настроить 301-переадресацию
29.08.2026
Автоматическое сохранение и обновление мета-полей при изменении записи в WordPress
19.12.2025
Как автоматизировать создание и удаление тематических категорий в WordPress
21.01.2026