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

|

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

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

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

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

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

Если фильтр работает через AJAX, это не значит, что проблем нет. Часто скрипт меняет адрес через history.pushState, и поисковик видит уже полноценную страницу с параметрами.

Какой подход выбрать: код, плагин или настройка темы

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

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

Если нужен более широкий набор инструментов для чистки дублей и технической оптимизации, в экосистеме WPShop для этого есть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, что именно вы закрываете и почему.

Пошаговое решение через wp_robots и canonical

Самый безопасный вариант — не ломать сайт целиком, а точечно добавлять noindex, follow для страниц с параметрами сортировки и фильтрации. Для этого удобно использовать фильтр wp_robots, который есть в современных версиях WordPress.

<?php
add_filter( 'wp_robots', function( $robots ) {
    if ( is_admin() ) {
        return $robots;
    }

    $query_args = array( 'sort', 'orderby', 'filter_color', 'filter_size', 'price_min', 'price_max' );

    foreach ( $query_args as $arg ) {
        if ( isset( $_GET[ $arg ] ) ) {
            $robots['noindex'] = true;
            $robots['follow']  = true;
            break;
        }
    }

    return $robots;
} );

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

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

<?php
add_filter( 'get_canonical_url', function( $canonical ) {
    if ( is_admin() ) {
        return $canonical;
    }

    $blocked_args = array( 'sort', 'orderby', 'filter_color', 'filter_size', 'price_min', 'price_max' );

    foreach ( $blocked_args as $arg ) {
        if ( isset( $_GET[ $arg ] ) ) {
            return remove_query_arg( $blocked_args, home_url( add_query_arg( array(), $_SERVER['REQUEST_URI'] ) ) );
        }
    }

    return $canonical;
} );

Здесь важно не переусердствовать. Canonical должен вести на реальную основную страницу категории, а не на случайно собранный URL из REQUEST_URI. Если структура сложная, лучше собирать canonical явно через логику шаблона или SEO-плагин.

Если фильтры работают через AJAX

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

Для AJAX-сценария полезно разделить два уровня:

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

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

После изменений не ограничивайтесь просмотром исходника. Проверьте несколько уровней:

  1. Откройте страницу с параметром, например ?sort=price, и посмотрите исходный код: в <meta name="robots"> должен быть noindex.
  2. Проверьте canonical: он должен указывать на основную версию страницы без лишних параметров.
  3. Сравните ответ сервера для базовой страницы и параметрической версии через curl -I или инструменты разработчика.
  4. В Search Console отправьте проверку URL и посмотрите, как робот видит страницу после переобхода.

Пример быстрой проверки из терминала:

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

Если вы используете SEO-плагин, проверьте, не переопределяет ли он ваши правила. Иногда тема или плагин выводит свой canonical, а ваш код уже не влияет на итоговый HTML.

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

1. Закрыли URL в robots.txt и решили, что вопрос закрыт

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

2. Поставили noindex на все страницы архива

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

3. Canonical ведёт на несуществующий или параметрический URL

Если canonical сам содержит фильтры, поисковик не поймёт, какая версия основная. В результате дубли останутся, а сигнал станет слабее.

4. Не учли пагинацию

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

Чек-лист перед публикацией изменений

Что делать для безопасности и производительности

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

Практически это означает:

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

Как найти и убрать дубли страниц в WordPress без потери SEO
16.08.2026
Как удалить пустые категории в WordPress без плагинов
30.01.2026
Как избежать конфликтов между плагинами в WordPress: практические решения
03.03.2026
Как добавить поддержку PHP 8 в WordPress без проблем
15.04.2026
Как удалить или изменить URL записи WordPress без редиректа и ошибок 404
05.12.2025
×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »