Почему обычные фильтры бесполезны для поиска

Большинство интернет-магазинов из коробки работают так: пользователь заходит в категорию, ставит галочки (цвет, размер, цена, бренд), и JavaScript подгружает отфильтрованный список товаров. URL при этом либо не меняется вовсе, либо превращается в нечитаемую кашу вроде:

/catalog/divany?color[]=gray&type[]=uglovoy&material[]=velur&page=1

Для пользователя это работает. Для поисковой системы — нет. Робот Яндекса или Google видит одну страницу категории, а все эти тысячи комбинаций фильтров для него просто не существуют. Получается, что магазин с 8 000 товаров конкурирует в поиске только страницами категорий верхнего уровня — «Диваны», «Кровати», «Шкафы». А все средне- и низкочастотные запросы типа «бежевый диван-кровать с ящиком» уходят конкурентам, у которых под такой запрос есть отдельная проиндексированная страница.

Именно эту задачу решают SEO-фильтры — они превращают определённые комбинации параметров в полноценные посадочные страницы со своим URL, заголовком, текстом и возможностью попасть в индекс.

Посадочные страницы из фильтров: что это на практике

Идея простая. Берём категорию «Диваны» и фиксируем для неё набор параметров, по которым реально ищут люди:

  • по типу: угловые, прямые, модульные
  • по цвету: серые, бежевые, зелёные
  • по механизму: аккордеон, еврокнижка, дельфин
  • по материалу обивки: велюр, рогожка, экокожа

Каждая такая комбинация (или одиночный параметр) может стать отдельной страницей. «Угловые диваны» — одна посадочная. «Серые угловые диваны» — другая. «Серые угловые диваны с механизмом еврокнижка» — третья, если по ней есть поисковый спрос.

На практике обычно действуют так:

  1. Собираем семантику. Через Wordstat и поисковые подсказки смотрим, какие комбинации параметров реально ищут. Нет спроса — нет страницы. Создавать посадочные «на всякий случай» — верный путь к раздутому индексу и проблемам.
  1. Определяем глубину вложенности. Одиночный фильтр (только цвет) — первый уровень. Два параметра (цвет + тип) — второй. Три — третий. Глубже двух уровней идти редко стоит, потому что на третьем уровне обычно или нет спроса, или остаётся 2–3 товара на странице, что плохо и для пользователя, и для поисковика.
  1. Генерируем мета-данные. Для каждой посадочной нужен уникальный Title, H1 и Description. Шаблонизация допустима, но с умом — об этом ниже.
  1. Добавляем текстовый блок. Небольшой — два-три абзаца. Не SEO-простыня на 5 000 знаков, а реально полезная информация: чем этот тип товаров отличается, на что обратить внимание при выборе. Яндекс после обновления «Циолковский» очень чутко реагирует на переспам и шаблонные тексты, так что лучше написать коротко, но по делу.

Как правильно делать ЧПУ для фильтров

ЧПУ (человекопонятный URL) — штука, которую часто делают «как получится», а потом переделывают заново. Вот несколько правил, которые не подводят.

Структура URL должна быть логичной и плоской.

Хороший вариант:

/divany/uglovye/
/divany/uglovye/serye/
/divany/velur/

Плохой вариант:

/catalog/category/divany/filter/type-uglovoy/color-seryy/material-velur/

Чем короче и проще URL, тем лучше. Поисковики любят лаконичность, пользователи — тоже. Вложенность больше трёх сегментов после домена — уже повод задуматься.

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

Транслитерация — единообразная. Решили, что серый — это `serye`, значит так везде. Не `gray`, не `seryj`, не `sery`. Одно слово — один слаг, без исключений. Стоит вести отдельную таблицу слагов для каждого проекта.

GET-параметры — только для нестатичных фильтров. Всё, что не является SEO-фильтром (сортировка, диапазон цен, наличие на складе), должно оставаться в GET-параметрах и закрываться от индексации через robots.txt или canonical. Смешивать статичные ЧПУ с динамическими параметрами — рецепт хаоса.

Каннибализация: когда фильтры начинают мешать друг другу

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

Каннибализация — это когда несколько страниц сайта конкурируют в выдаче за один и тот же запрос. Типичный пример: есть категория «Угловые диваны» и отдельная посадочная из фильтра «Диваны → угловые». Обе страницы оптимизированы под один кластер запросов, обе содержат одни и те же товары, у обеих похожие Title и H1. Яндекс не понимает, какую показывать, и в итоге обе проседают.

Как с этим бороться:

Чёткая иерархия. Каждый запрос закрепляется за одной конкретной страницей. Если в каталоге уже есть подкатегория «Угловые диваны» — не нужно дублировать её фильтром. Фильтр работает там, где подкатегории нет и создавать её нецелесообразно.

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

Canonical на основную страницу. Если дубль всё-таки возник (например, фильтр по бренду создаёт страницу, идентичную по содержанию странице бренда), ставится canonical на ту, которая приоритетнее. Не noindex — именно canonical.

Уникальные мета-данные. Даже если на двух посадочных частично пересекается товарный ассортимент, их Title, H1 и описания должны различаться по интенту. «Угловые диваны для гостиной» и «Угловые диваны-кровати» — это разные потребности, и мета-данные должны это отражать.

Техническая сторона: что происходит под капотом

Вот как это устроено технически — без привязки к конкретному движку, потому что принципы одинаковые.

Таблица SEO-правил. В базе данных создаётся отдельная сущность — назовём её `seo_filter_rules`. Каждая запись хранит комбинацию параметров (категория + набор значений фильтров), соответствующий ей slug, мета-данные и текстовый контент. Когда пользователь заходит по ЧПУ типа `/divany/uglovye/serye/`, роутер разбирает URL, находит нужное правило и отдаёт страницу с правильными мета-тегами и контентом.

Генерация на стороне сервера. SEO-фильтры должны рендериться на сервере — SSR или SSG. Если каталог работает как SPA и фильтрация целиком на клиенте, поисковый робот просто не увидит содержимое. Даже с учётом того, что Яндекс умеет рендерить JavaScript, полагаться на это в 2026 году — рискованно. Серверный рендеринг надёжнее.

Перелинковка. Посадочные из фильтров нужно не просто создать — их нужно связать с остальным сайтом. Обычно это делается через блоки «Популярные подборки» или «Смотрите также» внутри категорий. Это и для пользователя удобно, и для поискового робота — он находит эти страницы через внутренние ссылки, а не только через sitemap.

Sitemap. Все SEO-посадочные добавляются в sitemap.xml. Без этого индексация может затянуться на месяцы, особенно для крупных каталогов.

Robots.txt и meta-robots. Динамические комбинации фильтров, которые не являются SEO-посадочными, должны быть закрыты от индексации. Оптимален комбинированный подход: для GET-параметров — директива Disallow в robots.txt, для пограничных случаев — meta-robots noindex, follow на уровне страницы.

Шаблонизация мета-данных: между эффективностью и здравым смыслом

Когда посадочных из фильтров набирается сотни или тысячи, писать для каждой уникальный Title вручную — нереально. Шаблонизация спасает, но у неё есть границы.

Типичный шаблон:

Title: {Значение фильтра 1} {Значение фильтра 2} — купить в Москве | Магазин
H1: {Значение фильтра 1} {Значение фильтра 2}
Description: {Значение фильтра 1} {Значение фильтра 2} по выгодной цене.
Доставка по Москве и России. Каталог с фото и ценами.

Работает нормально, пока значений немного. Но когда шаблон подставляет «Экокожа бежевый аккордеон диваны купить в Москве» — это уже выглядит как спам, и поисковик это чувствует.

Рекомендуемый подход: шаблон + ручная доводка для приоритетных страниц. Для низкочастотных посадочных, куда приходит 10–20 человек в месяц, шаблон допустим. Для среднечастотных, на которые делается ставка — лучше потратить время и написать нормальный Title руками. Это окупается.

Распространённые ошибки

Вот самые частые грабли при настройке SEO-фильтров.

Создали посадочные под все возможные комбинации. Магазин электроники, 12 параметров фильтрации, каждый с 5–15 значениями. Сгенерировали десятки тысяч страниц. Результат — тонкий контент, нулевой спрос на 90% посадочных, просадка краулингового бюджета. Яндекс начал вообще хуже индексировать основные категории, потому что робот тратил ресурсы на обход мусорных страниц.

ЧПУ без редиректов при смене структуры. Переделали URL-структуру фильтров, старые адреса стали отдавать 404. Потеряли позиции по всем посадочным за неделю. Любое изменение URL — это 301-редирект со старого адреса на новый, без исключений.

Пустые посадочные. Создали страницу «Зелёные кожаные кресла», а товаров по таким параметрам в каталоге — ноль. Пустая страница с текстом и без товаров — это прямая дорога к пессимизации. Всегда стоит делать проверку: если товаров меньше определённого порога (обычно 3–5), посадочная не создаётся или закрывается от индексации.

Дубли из-за порядка параметров. `/divany/serye/uglovye/` и `/divany/uglovye/serye/` — для поисковика это две разные страницы с одинаковым содержимым.

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

Как это работает с «Циолковским»

Обновление «Циолковский», которое Яндекс раскатывал с конца 2025 года, серьёзно сдвинуло приоритеты. Если раньше можно было набить страницу ключевиками и получить трафик, то сейчас алгоритм смотрит глубже: насколько страница реально полезна, есть ли у неё уникальная ценность, не является ли она тонким контентом.

Для SEO-фильтров это значит следующее:

Создавать посадочные нужно только под реальный спрос. Шаблонная генерация тысяч пустых страниц «на вырост» — это риск. Каждая посадочная должна содержать достаточное количество товаров и приносить пользу посетителю.

Тексты на посадочных должны быть осмысленными. Не «Купить серые угловые диваны в интернет-магазине по выгодной цене с доставкой», а нормальное описание: чем эта подборка полезна, какие модели популярны, на что обратить внимание.

Экспертность и опыт — то, что в E-E-A-T называется Experience и Expertise. Если на посадочной есть элементы, показывающие, что за сайтом стоят люди, разбирающиеся в теме (советы по выбору, сравнения, реальные фотографии), — это плюс.

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

Чек-лист перед запуском SEO-фильтров

Перед тем как выкатывать SEO-фильтры на боевой сайт, стоит пройти по этому списку.

Семантика собрана, кластеры распределены по страницам, пересечений нет. Для каждой посадочной определён целевой кластер запросов, и ни один кластер не закреплён за двумя страницами одновременно.

ЧПУ-структура утверждена и задокументирована. Порядок параметров зафиксирован, таблица слагов заполнена, транслитерация единообразная.

Мета-данные настроены — шаблонные для массовых посадочных, уникальные для приоритетных.

Серверный рендеринг работает корректно. Проверено через `curl` или «Просмотр исходного кода» — мета-теги и контент отдаются в HTML, а не подгружаются через JavaScript.

Динамические фильтры закрыты от индексации. GET-параметры, сортировка, пагинация — всё под Disallow или noindex.

Canonical настроен на всех посадочных. Каждая SEO-страница ссылается сама на себя через canonical, дубли — на приоритетную версию.

Внутренняя перелинковка реализована. Есть ссылки из категорий на посадочные, из посадочных — обратно.

Sitemap обновлён. Все новые URL добавлены, старые (если менялись) — убраны или заменены.

Проверены пустые посадочные. Страницы без товаров или с 1–2 товарами закрыты от индексации или не генерируются.

Страница загружается быстро. Лишних запросов нет, картинки оптимизированы, кэширование настроено. Для посадочных с большим количеством товаров — ленивая подгрузка.