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

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

Когда проблема действительно есть

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

  • в Google Search Console появляются URL с параметрами, которых нет в меню и карте сайта;
  • в индексе есть десятки вариантов одной и той же страницы с разными сортировками;
  • поиск показывает страницы фильтров вместо основной категории;
  • в логах и аналитике видно много заходов на адреса с ?sort=, ?orderby=, ?filter_, но они не дают трафика.

Что проверить перед изменениями

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

  • Есть ли у страницы отдельный заголовок и текст?
  • Меняется ли основной контент или только выдача товаров/записей?
  • Попадает ли URL в XML-карту сайта?
  • Отдаёт ли страница статус 200 OK?

Какие варианты решения работают в WordPress

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

ПодходКогда применятьПлюсыОграничения
noindexСтраница должна открываться пользователю, но не попадать в индексПростой и предсказуемый вариантНужен доступ поискового робота, чтобы он увидел директиву
canonicalЕсть основная версия страницы, а параметры — её дубльПомогает склеить сигналыНе всегда достаточно без noindex
robots.txtНужно ограничить обход технических URLСнижает нагрузку на crawlНе гарантирует удаление уже известных URL из индекса

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

Пошаговое решение через код

Ниже пример для темы или небольшого MU-плагина. Он добавляет noindex, follow для URL с типичными параметрами фильтрации и ставит canonical на базовую страницу без query string.

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

    $query = $_SERVER['QUERY_STRING'] ?? '';
    if ($query === '') {
        return;
    }

    $patterns = array(
        'orderby=',
        'order=',
        'sort=',
        'filter_',
        'price_min=',
        'price_max=',
    );

    foreach ($patterns as $needle) {
        if (strpos($query, $needle) !== false) {
            echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
            break;
        }
    }
}, 1);

add_filter('get_canonical_url', function ($canonical) {
    if (is_admin() || empty($_SERVER['REQUEST_URI'])) {
        return $canonical;
    }

    $request_uri = wp_unslash($_SERVER['REQUEST_URI']);
    if (strpos($request_uri, '?') === false) {
        return $canonical;
    }

    $patterns = array('orderby=', 'order=', 'sort=', 'filter_', 'price_min=', 'price_max=');
    foreach ($patterns as $needle) {
        if (strpos($request_uri, $needle) !== false) {
            return home_url( strtok($request_uri, '?') );
        }
    }

    return $canonical;
});

Этот вариант не пытается закрыть всё подряд. Он реагирует только на заранее известные параметры. Это важно: если на сайте есть полезные query string для авторизации, поиска или пагинации, их не нужно ломать.

Если нужен более точный контроль

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

<?php
add_action('wp_head', function () {
    if (!is_category() && !is_tax()) {
        return;
    }

    $query = $_SERVER['QUERY_STRING'] ?? '';
    if ($query && preg_match('/(?:orderby|sort|filter_|price_min|price_max)=/i', $query)) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 1);

Что добавить в robots.txt, а что не трогать

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

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

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

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

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

  • Откройте проблемный URL в браузере и посмотрите исходный код страницы.
  • Убедитесь, что есть <meta name="robots" content="noindex,follow" />.
  • Проверьте canonical: он должен вести на URL без параметров.
  • Посмотрите, не добавляет ли SEO-плагин свой canonical поверх вашего.
  • Проверьте XML sitemap: технические URL не должны туда попадать.
  • В Search Console отправьте проверку конкретного URL и дождитесь повторного обхода.

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

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

Закрыли через robots.txt, но не поставили noindex

Это самая частая ошибка. URL остаётся в индексе, потому что поисковик не видит запрет на самой странице. Решение: вернуть доступ роботу и добавить noindex,follow.

Сломали полезные страницы с параметрами

Иногда под фильтр попадают страницы поиска, пагинации или сортировки, которые реально нужны пользователю. Исправление простое: сузить правила до конкретных паттернов и типов страниц. Не используйте слишком общий поиск по символу ? или по всем query string.

Canonical указывает на несуществующий URL

Так бывает, если в коде обрезают строку запроса неправильно или забывают про слэш в конце. Canonical должен вести на реальную каноническую страницу, которая отдаёт 200 OK.

SEO-плагин перезаписывает ваши мета-теги

Если установлен плагин для SEO, он может выводить свой canonical или robots meta. Тогда нужно либо настроить его штатно, либо убрать свой код и оставить один источник правды. Дублировать логику в теме и плагине — плохая идея.

Как не перегрузить сайт лишней логикой

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

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

Если нужен более широкий набор инструментов для чистки дублей, canonical и технической SEO-настройки, такие задачи часто решают через отдельные SEO-утилиты вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpreg.ru&utm_medium=article&utm_campaign=zakryt-ot-indeksacii-stranicy-filtrov-i-parametrov-v-wordpress

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

Как создать уникальный shortcode с атрибутами в WordPress: подробное руководство
27.02.2026
Как избежать конфликтов между плагинами в WordPress
26.12.2025
Как сделать удалённый вызов REST API в WordPress с авторизацией
16.01.2026
Как использовать WPReg_cron для автоматизации задач в WordPress
10.02.2026
Как закрыть от индексации страницу поиска WordPress и убрать дубли
26.08.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее