Фильтры в каталоге — это одновременно главный источник низкочастотного трафика и главный генератор мусорных URL. Правило простое: в индекс пускаем только комбинации фильтров, под которые есть спрос и нормальное число товаров, — у них свой ЧПУ, свой title и H1. Всё остальное закрываем: canonical на категорию, noindex, Clean-param для Яндекса. Ниже — как отобрать, как оформить, как закрыть и какие ошибки я видел чаще всего.
Разбираем главную техничку e-commerce, на которой магазины теряют больше всего. Не контент, не ссылки. Фильтры.
Типовая картина: магазин на 3 000 товаров, в индексе Яндекса 40 000 страниц, из них 36 000 — вариации ?color=red&size=42&sort=price. Робот тратит обход на мусор, новые товары индексируются неделями, а страница «кроссовки женские белые», под которую реально ищут, не существует вообще. Знакомо?
Два типа фильтров, которые путают
Первое, что надо понять: не все фильтры одинаковые. Есть фильтры, которые люди ищут словами, и есть фильтры, которые нужны только внутри сайта.
- Поисковые фильтры — бренд, тип, цвет, материал, назначение, иногда размер. «Диван угловой серый», «шины 205/55 R16 зимние», «кроссовки Nike мужские». Под них есть запросы в Wordstat. Это посадочные страницы.
- Служебные фильтры — цена «от-до», сортировка, наличие, «товаров на странице», рейтинг. Никто не ищет «диваны от 812 до 1430 BYN по возрастанию». Это мусор для индекса.
Первые делаем страницами. Вторые закрываем. Вся стратегия в этом, остальное — детали реализации.
Как отобрать, что пускать в индекс
Берём категорию, выписываем фильтры и их значения. Прогоняем комбинации через Wordstat (для РБ — регион Беларусь, для РФ — Россия) и Keyword Planner. Как сравнивать эти два источника — в статье Wordstat vs Keyword Planner.
Пускаем в индекс, если выполняются все три условия:
- Есть спрос. Для РБ я ставлю порог от 10-20 показов в месяц по точной фразе — рынок маленький, НЧ здесь и есть деньги. Для РФ порог выше.
- В выдаче по этому запросу сидят страницы категорий/фильтров, а не статьи. Интент коммерческий — значит, наш.
- На странице будет хотя бы 3-5 товаров. Фильтр-страница с одним товаром — тонкий контент, и Яндекс её выкинет как малоценную.
Глубина — обычно один фильтр или пара «тип + бренд», «тип + цвет». Три фильтра и глубже — почти никогда. Спроса нет, товаров мало, страниц — тысячи.
| Комбинация | Пример | В индекс? |
|---|---|---|
| Категория + бренд | /divany/ikea/ | Да, если спрос есть |
| Категория + тип | /divany/uglovye/ | Да, почти всегда |
| Категория + тип + цвет | /divany/uglovye/seryj/ | Выборочно, по Wordstat |
| Любой + цена от-до | ?price=800-1400 | Нет |
| Любой + сортировка | ?sort=price_asc | Нет |
| 3+ фильтра одновременно | ?brand=x&color=y&mat=z | Нет |
Как оформить индексируемую фильтр-страницу
Если страница идёт в индекс — она должна выглядеть как нормальная категория, а не как результат выборки.
- ЧПУ без параметров:
/divany/uglovye/seryj/, а не/divany/?type=12&color=4. Статичный, стабильный, один на комбинацию. - Свой title и H1 под запрос: «Серые угловые диваны — купить в Минске, цены от 890 BYN». Шаблон генерации — ок, но проверь, что он не выдаёт «Диваны Угловые Цвет: Серый» с заглавными. Про шаблоны — title и description.
- Self-canonical. Canonical на саму себя, не на родительскую категорию. Иначе страницы в индексе не будет — ты сам попросил её склеить.
- Короткий текст на 300-600 знаков, если есть что сказать. Если нечего — лучше без текста, чем с водой «Серые угловые диваны — это отличный выбор для...».
- Ссылки на неё из родительской категории — блоком тегов «Популярное: угловые, прямые, серые, IKEA». Страница, на которую нет ссылок, кроме как через JS-фильтр, для робота сирота. Подробнее — внутренняя перелинковка.
- В sitemap.xml. Только индексируемые комбинации, служебные — нет.
Как закрыть всё остальное
Тут у всех разные рецепты, и половина из них ломает сайт. Мой порядок:
Canonical на категорию
Для служебных параметров (сортировка, цена, количество на странице) — canonical на чистый URL категории. Google считает canonical подсказкой, а не приказом, но в связке с остальным работает.
Clean-param для Яндекса
Яндекс поддерживает директиву Clean-param в robots.txt — она говорит роботу, что параметр не меняет контент, и склеивает URL. Это лучшее, что есть для Яндекса: страницы не обходятся впустую, а сигналы (ссылки, поведенческие) переходят на основной URL. Синтаксис — в справке Яндекса.
User-agent: Yandex
Clean-param: sort&price_from&price_to&limit&view /catalog/Google Clean-param игнорирует. Для него — canonical и noindex.
Disallow — осторожно
Закрыть Disallow: /*?sort= в robots.txt — соблазнительно и быстро. Но страница под Disallow не сканируется, значит, Google не видит на ней ни canonical, ни noindex. Если на такие URL есть внешние ссылки, Google может оставить их в индексе с пустым сниппетом. Disallow — для откровенного мусора вроде внутреннего поиска и корзины, не для всего подряд. Про синтаксис — robots.txt для Google и Яндекса.
Не генерировать ссылки на мусор
Самое недооценённое. Если фильтры меняют URL через обычные <a href> на каждую комбинацию, робот пойдёт по всем. Служебные фильтры лучше делать формой или кнопками без href на новые URL — тогда робот их просто не найдёт. Google прямо об этом пишет в своём руководстве по фасетной навигации.
Ошибки, которые я вижу чаще всего
Фильтр-страницы в индексе с canonical на категорию. Магазин сделал ЧПУ под «угловые диваны», прописал title, собрал ссылки — и оставил canonical на /divany/. Страница в индекс не попадает, все удивляются.
Порядок параметров плодит дубли. ?color=grey&type=corner и ?type=corner&color=grey — это две страницы для робота. Нормализуй порядок на бэкенде или редиректи на канонический.
Пустые комбинации отдают 200. «Диваны IKEA розовые» — 0 товаров, «ничего не найдено», код ответа 200. Сотни таких страниц = soft 404 в GSC пачкой. Пустая комбинация — noindex или 404, а лучше вообще не выводить ссылку на неё в фильтре.
И моя собственная. Интернет-магазин мебели, около 800 SKU. Открыли в индекс 120 фильтр-страниц по Wordstat — всё по правилам. Через два месяца треть из них выпала как «малоценные». Разобрались: товары на них были те же, что на родительской категории, просто в другом порядке. Для Яндекса это дубль. Урезали до 70 страниц, где выборка реально отличалась, — оставшиеся держатся и приносят около четверти органики каталога.
Как проверить, что у тебя сейчас
- Яндекс.Вебмастер → Индексирование → Страницы в поиске. Фильтруй по URL с
?. Если их больше, чем товаров, — у тебя проблема. - Там же → Исключённые страницы → «Дубли» и «Малоценная или маловостребованная». Смотри, какие шаблоны URL туда попадают.
- GSC → Страницы → «Страница является копией, канонический вариант не выбран пользователем» и «Просканирована, но не проиндексирована». Про разницу отчётов — GSC vs Вебмастер.
- Логи сервера или Screaming Frog: какая доля обхода уходит на параметрические URL. Больше половины — лечить срочно.
Когда ты последний раз заглядывал в исключённые страницы Вебмастера? Там обычно вся правда о фильтрах.
Частые вопросы
Фильтры на AJAX без смены URL — это плохо?
Для служебных фильтров — отлично, мусор не плодится. Для поисковых — плохо: страницы под «угловые серые» не существует, трафик уходит конкурентам. Решение — гибрид: поисковые фильтры ведут на статичные ЧПУ, служебные работают без смены URL.
Сколько фильтр-страниц открывать на старте?
Начни с 20-50 самых частотных на ключевых категориях. Посмотри через 6-8 недель, что зашло в индекс и собирает показы. Потом расширяй. Открыть 2 000 сразу — гарантированно получить половину в «малоценных».
Нужна ли микроразметка на фильтр-страницах?
BreadcrumbList — да, обязательно. ItemList / Product в листинге — по желанию, эффект в сниппетах слабый. Главное — Product на карточках, про это — SEO карточек товара.
Пагинация фильтр-страниц — индексировать?
Страницы 2, 3, ... оставляй индексируемыми с self-canonical — иначе товары с дальних страниц хуже находятся роботом. Canonical всех страниц пагинации на первую — ошибка, так товары с глубины просто теряются.
Разберу фильтры твоего магазина — что открыть, что закрыть, какие страницы уже зря съедают обход: mostlycorp@gmail.com. Ещё по теме: каннибализация ключей, микроразметка Schema.org.