wpfind.ru wordpress wpfind.ru

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

Фасетные фильтры, сортировки и параметры в URL часто создают в WordPress десятки почти одинаковых страниц. Для пользователя это удобный интерфейс, а для поисковика — источник дублей, мусорных URL и лишней нагрузки на краулинг. Проблема обычно всплывает не сразу: сначала растёт число страниц в индексе, потом в Search Console появляются странные URL с параметрами, а затем важные страницы начинают конкурировать с фильтрами.

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

Когда фильтры становятся проблемой для индексации

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

Типичные признаки, что фильтры пора ограничивать

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

Диагностика: какие URL закрывать, а какие оставить

Перед правками нужно разделить URL на три группы. Это важнее, чем сразу ставить noindex на всё подряд.

Тип URLПримерЧто делать
Технические параметры?sort=price, ?view=listЗакрывать от индексации, обычно ещё и от обхода
Фильтры-комбинации?color=red&size=mЧаще всего закрывать, если нет отдельной SEO-ценности
Полезные посадочныеЧПУ-страница категории или вручную созданная страница под спросОставлять открытой, при необходимости усиливать контентом

Проверять нужно не только HTML-страницы, но и то, как они попадают в sitemap, какие canonical у них стоят и не создают ли они внутренние ссылки из меню, фильтра или хлебных крошек.

Пошаговое решение: как закрыть фасетные URL в WordPress

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

1. Уберите мусорные URL из sitemap

Если фильтры или параметры попадают в XML-карту сайта, их нужно исключить на уровне генератора sitemap или плагина. Поисковику не стоит подсказывать URL, которые вы сами считаете техническими.

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

2. Добавьте noindex,follow для страниц с параметрами

Если фильтр отрабатывает через GET-параметры, можно добавить мета-тег на уровне темы или плагина. Пример ниже ставит noindex,follow для страниц с типичными параметрами фильтрации.

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

    $params = ['sort', 'view', 'filter', 'color', 'size', 'price'];

    foreach ($params as $param) {
        if (isset($_GET[$param])) {
            echo '<meta name="robots" content="noindex,follow">' . "\n";
            break;
        }
    }
});

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

3. Задайте canonical на основную страницу

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

<?php
add_filter('wpseo_canonical', function ($canonical) {
    if (isset($_GET['sort']) || isset($_GET['view']) || isset($_GET['filter'])) {
        return remove_query_arg(['sort', 'view', 'filter', 'color', 'size', 'price']);
    }

    return $canonical;
});

Если у вас не Yoast SEO, аналогичный принцип можно реализовать через фильтр canonical в вашей теме или SEO-плагине. Смысл один: фильтрованный URL не должен конкурировать с основной страницей.

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

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

User-agent: *
Disallow: /*?sort=
Disallow: /*?view=
Disallow: /*?filter=
Disallow: /*?color=
Disallow: /*?size=
Disallow: /*?price=

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

Если фильтры сделаны плагином: что проверить в настройках

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

  • noindex для страниц с параметрами;
  • canonical на основную категорию;
  • исключение параметров из sitemap;
  • отключение индексации сортировок;
  • ограничение генерации комбинаций фильтров.

Если плагин фильтрации создаёт отдельные ЧПУ-страницы под фильтры, проверьте, есть ли у них реальная поисковая ценность. Иногда лучше оставить только несколько вручную созданных посадочных страниц, а остальное закрыть.

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

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

  1. Откройте URL с параметром и убедитесь, что в исходном коде есть <meta name="robots" content="noindex,follow">.
  2. Проверьте canonical: он должен вести на чистую страницу без параметров.
  3. Посмотрите, исчез ли мусорный URL из sitemap.
  4. В Google Search Console проверьте отчёты по страницам и обходу: не растёт ли число URL с параметрами.
  5. Запустите краулер по сайту и сравните количество дублей до и после правок.

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

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

curl -s "https://example.com/catalog/?sort=price" | grep -i "robots\|canonical"

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

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

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

Это самая частая ошибка. Поисковик может знать URL по ссылкам, но не увидеть сигнал на странице. В итоге адрес остаётся в индексе дольше, чем нужно. Исправление: сначала вернуть доступ для обхода, дать увидеть noindex, и только потом при необходимости ограничивать crawl.

Поставили noindex на все страницы категории

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

Canonical указывает на саму фильтрованную страницу

Если canonical не убирает параметры, сигнал не склеивается. Проверьте, не переопределяет ли его SEO-плагин, тема или шаблон фильтра.

Фильтрованные URL остаются в sitemap

Даже при noindex это плохой сигнал. Поисковик видит, что вы сами включили URL в карту сайта. Исправление: исключить параметры на уровне генератора sitemap или отключить их вывод.

Безопасность и производительность: что не стоит делать

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

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

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

Практический чек-лист перед публикацией правок

  • определены параметры, которые должны быть закрыты;
  • полезные посадочные страницы не попали под общий запрет;
  • для технических URL добавлен noindex,follow;
  • canonical ведёт на чистый URL;
  • мусорные URL исключены из sitemap;
  • внутренние ссылки не ведут на параметризованные адреса без необходимости;
  • проверка через исходный код и Search Console выполнена после внедрения.

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше