Если на сайте появились десятки или сотни URL с параметрами фильтрации, поисковики часто начинают индексировать не те страницы. В результате в индексе оказываются пустые или почти одинаковые подборки, а нормальные посадочные страницы получают меньше внимания. Это типичная история для каталогов, блогов с фильтрами по рубрикам и любых сайтов, где фильтрация строится через GET-параметры.
Задача здесь не в том, чтобы «запретить всё подряд», а в том, чтобы аккуратно убрать из индекса технические комбинации фильтров и оставить полезные страницы: категории, теги, статические посадочные и вручную созданные фильтр-лендинги, если они реально нужны.
Какие страницы фильтра обычно попадают в индекс
Проблема почти всегда выглядит одинаково: в Google Search Console или Яндекс.Вебмастере появляются URL с параметрами вроде ?color=red, ?size=m, ?sort=price, ?brand=.... Часто это не отдельные страницы, а одна и та же выдача каталога, только в разных комбинациях.
Опасны не сами параметры, а их количество и комбинации. Если фильтр может собираться из нескольких значений, число URL растёт быстро. Поисковик тратит обход на мусорные страницы, а дубли начинают конкурировать между собой.
Когда закрывать, а когда оставлять
Не все фильтры нужно закрывать. Если у вас есть осмысленная посадочная страница под конкретный спрос, например «ноутбуки до 50000», её лучше делать отдельной страницей с ЧПУ и контентом, а не надеяться на параметр в URL. А вот технические комбинации сортировки, пустые фильтры, пересечения по нескольким признакам и страницы с малым числом товаров обычно лучше не индексировать.
| Подход | Когда подходит | Минус |
|---|---|---|
| noindex для параметров | Нужно убрать из индекса технические комбинации | Страница может продолжать обходиться роботом |
| canonical на основную категорию | Фильтр не должен быть самостоятельной посадочной | Не всегда подходит для полезных фильтр-лендингов |
| robots.txt | Нужно сократить обход большого числа параметров | Нельзя использовать как единственный способ для уже известных URL |
Диагностика: как понять, что именно индексируется
Сначала проверьте, какие URL реально попали в индекс. Не ориентируйтесь только на ощущение «их стало много». Нужны конкретные примеры из Search Console, логов сервера или отчёта по страницам.
- Откройте отчёт по индексированию страниц в Google Search Console.
- Найдите URL с параметрами фильтрации и сортировки.
- Проверьте, есть ли у них canonical на основную категорию.
- Посмотрите, не закрыты ли они уже через
noindexилиX-Robots-Tag. - Убедитесь, что это не важные посадочные страницы, которые должны индексироваться.
Если у вас есть доступ к серверным логам, полезно посмотреть, как часто бот ходит по параметрическим URL. Иногда проблема не в индексации как таковой, а в том, что робот тратит слишком много обхода на бесполезные комбинации.
Рабочая схема: что делать с фильтрами в WordPress
Для большинства сайтов нормальная схема такая: технические параметры закрываем от индексации, а полезные посадочные делаем отдельными страницами. Если фильтр генерируется плагином, сначала проверьте его настройки. Многие решения уже умеют ставить canonical, noindex или отключать индексацию для параметров.
Если настроек недостаточно, можно добавить правила на уровне темы или небольшого mu-plugin. Ниже пример, который добавляет noindex,follow для URL с типичными параметрами фильтрации. Это не универсальный рецепт для всех сайтов, но рабочая база для технических страниц.
<?php
add_action('wp_head', function () {
if (is_admin()) {
return;
}
$filter_params = ['color', 'size', 'brand', 'sort', 'price', 'min_price', 'max_price'];
foreach ($filter_params as $param) {
if (isset($_GET[$param]) && $_GET[$param] !== '') {
echo '<meta name="robots" content="noindex,follow">' . "\n";
break;
}
}
}, 1);Если фильтр работает через отдельные rewrite-правила или AJAX, одного meta-тега может быть мало. Тогда имеет смысл добавить заголовок X-Robots-Tag на уровне сервера или через PHP, если это поддерживается вашим стеком. Для PHP-варианта можно использовать template_redirect, но только если вы точно понимаете, на каких шаблонах это нужно.
<?php
add_action('template_redirect', function () {
if (is_admin()) {
return;
}
$has_filter = false;
foreach (['color', 'size', 'brand', 'sort', 'price'] as $param) {
if (!empty($_GET[$param])) {
$has_filter = true;
break;
}
}
if ($has_filter && !headers_sent()) {
header('X-Robots-Tag: noindex, follow', true);
}
});Когда нужен canonical
Canonical полезен, если фильтр-страница по сути дублирует основную категорию и не должна считаться самостоятельной. Тогда canonical указывает на чистый URL категории без параметров. Но не ставьте canonical на все подряд автоматически: если фильтр-страница реально полезна пользователю и у неё есть уникальный контент, canonical может мешать её индексации.
Пример логики: сортировка и технические параметры — canonical на базовую категорию; вручную созданная посадочная под спрос — self-canonical и нормальная индексация.
Как ограничить обход параметров через robots.txt
robots.txt не решает задачу индексации сам по себе, но помогает сократить обход мусорных URL. Это особенно полезно, если фильтр создаёт много комбинаций, а бот регулярно их обходит.
Пример осторожного правила:
User-agent: *
Disallow: /*?*sort=
Disallow: /*?*price=
Disallow: /*?*color=
Disallow: /*?*size=Но есть важная оговорка: если URL уже известен поисковику, одного запрета в robots.txt может быть недостаточно для удаления из индекса. Поэтому для уже проиндексированных страниц лучше сочетать robots.txt с noindex или canonical, а затем дождаться переобхода.
Пошагово: безопасный порядок внедрения
- Соберите список параметров, которые создают дубли.
- Проверьте, есть ли среди них полезные посадочные страницы.
- Для технических параметров добавьте
noindex,follow. - При необходимости поставьте canonical на основную категорию.
- Ограничьте лишний обход через robots.txt.
- Проверьте, не сломались ли фильтры для пользователей и пагинация.
Если фильтрация реализована плагином, сначала ищите штатные настройки. Это безопаснее, чем хардкодить правила в теме. Если же плагин не даёт нужного контроля, лучше вынести логику в отдельный мини-плагин или mu-plugin, чтобы она не пропала при смене темы.
Как проверить, что решение сработало
Проверка нужна не только по коду, но и по фактическому поведению поисковика. Сразу после правок не ждите мгновенного исчезновения URL из индекса: сначала нужно убедиться, что страницы отдают нужные сигналы.
- Откройте несколько URL с параметрами и проверьте исходный код страницы.
- Убедитесь, что есть
meta name="robots" content="noindex,follow"или заголовокX-Robots-Tag. - Проверьте canonical в HTML, если он используется.
- В Search Console отправьте URL на проверку и посмотрите, как робот видит страницу.
- Через несколько дней проверьте, уменьшилось ли число параметрических URL в отчёте по индексированию.
Если страница по-прежнему индексируется, проверьте три вещи: не перекрывает ли другой плагин ваши мета-теги, не генерируется ли canonical на саму параметрическую страницу, и не закрыт ли URL только в robots.txt без noindex.
Частые ошибки и как их исправить
Закрыли всё через robots.txt
Это частая ошибка. Если URL уже в индексе, запрет в robots.txt не гарантирует его удаление. Для уже известных страниц нужен сигнал на самой странице: noindex или canonical.
Поставили noindex на полезные посадочные
Иногда под раздачу попадают страницы, которые должны приносить трафик. Перед массовым закрытием проверьте, какие URL реально имеют спрос и контент. Не закрывайте всё, что содержит параметр, без разбора.
Сломали фильтр для пользователей
Если фильтр работает через JS, а вы добавили правила на уровне шаблона, можно случайно повлиять на AJAX-запросы или на генерацию ссылок. После внедрения обязательно проверьте работу фильтра на фронтенде: выбор значений, сброс, пагинацию и сортировку.
Canonical указывает не туда
Иногда плагины или тема ставят canonical на URL с параметрами. Это создаёт путаницу для поисковика. Canonical должен вести на чистую основную страницу, если фильтр не является самостоятельной посадочной.
Что учесть по безопасности и производительности
Если вы добавляете код вручную, не встраивайте его в functions.php без понимания, как будете обновлять тему. Для технических правок лучше использовать mu-plugin или отдельный мини-плагин. Так вы не потеряете настройки при обновлении и не привяжете SEO-логику к оформлению.
Ещё один практический момент: не обрабатывайте слишком много параметров без необходимости. Чем проще правило, тем меньше риск случайно закрыть важный URL. Если у вас большой сайт с множеством дублей, имеет смысл сначала навести порядок в генерации ссылок и шаблонах фильтра, а уже потом добивать индексацию мета-тегами.
Если нужен более широкий набор инструментов для чистки дублей, canonical и технической оптимизации, можно посмотреть на Clearfy Pro, но перед установкой всё равно проверьте, какие именно параметры и шаблоны он меняет в вашем проекте.
В итоге рабочая схема простая: сначала находите реальные параметрические дубли, потом разделяете полезные и технические URL, затем ставите noindex/canonical там, где это нужно, и только после этого ограничиваете обход через robots.txt. Такой порядок даёт предсказуемый результат и не ломает нормальную навигацию сайта.