Проектирование SEO-фильтров для каталогов
На сайтах с большим товарным каталогом обычного фильтра по характеристикам недостаточно для SEO.
Пользователь может выбрать производителя, тип оборудования, мощность, давление, материал, цвет или другие параметры и получить подходящие товары. Но если каждое такое сочетание автоматически превращать в индексируемую страницу, каталог быстро начинает генерировать большое количество технических URL, дублей и страниц без самостоятельного поискового интента.
Обратная ситуация тоже нежелательна: если полностью исключить фильтрацию из поисковой структуры, сайт теряет возможность создавать коммерческие посадочные под конкретный спрос.
Для rooffasad.ru и pnevmotek.com я проектировала SEO-фильтры, в которых пользовательская фильтрация и индексируемые посадочные страницы рассматриваются как разные уровни системы.
Основной принцип:
не каждая комбинация фильтра должна становиться SEO-страницей. Индексируемые посадочные создаются и контролируются отдельно, а остальные сочетания остаются инструментом подбора товаров.
При этом два проекта заметно отличались по масштабу. Для rooffasad.ru требовалось разработать базовую архитектуру SEO-фильтра. Для pnevmotek.com — полноценную систему фасетной навигации большого B2B-каталога с разными наборами характеристик для разных типов оборудования.
Задача для rooffasad.ru
На rooffasad.ru фильтр уже работал и формировал адреса с GET-параметрами.
Например:
/sajding/?filter=1&price_to=16187&producer_id[0]=128
При этом страница фильтра использовала те же метатеги, что и основная категория «Сайдинг».
То есть товарная выдача менялась, а Title, Description и H1 оставались такими же, как у родительской категории. Это создавало дублирование метаданных между разными состояниями каталога.
Задача состояла в том, чтобы отделить обычную фильтрацию от полноценных SEO-посадочных.
Уникальные H1 и метатеги для SEO-посадочных
Для утверждённых страниц фильтра в ТЗ предусматривались:
- Title;
- Description;
- H1;
- текстовый блок.
При этом данные могли генерироваться по шаблону, но для каждой созданной страницы должна была сохраняться возможность ручного редактирования.
Это позволяет не создавать сотни страниц с одинаковыми шаблонными метаданными.
Например, страница конкретного производителя должна описывать именно товары этого бренда, а не продолжать использовать общий H1 категории «Сайдинг».
ЧПУ вместо длинных URL с параметрами
Следующей частью проекта стала структура адресов.
Вместо технического URL:
/sajding/?filter=1&price_to=16187&producer_id[0]=128
для выбранных SEO-посадочных предусматривались понятные ЧПУ.
Например:
/sajding/fibrostar/
или для более глубокой категории:
/sajding/fibroczementnyj/fibrostar/
Такая структура была заложена непосредственно в ТЗ.
Рассматривалась и логика адресов по отдельным характеристикам:
/sajding/cena-do-16187//sajding/proizvoditel-128/- или комбинациям параметров.
При этом важен не сам факт наличия ключевого слова в URL, а управляемость структуры: одному состоянию SEO-посадочной должен соответствовать один основной адрес.
Стратегия canonical и индексации
Для SEO-посадочных требовалось определить собственные канонические URL.
Например, для сочетания:
Фиброцементный сайдинг + Fibrostar
отдельной страницей мог стать адрес:
/sajding/fibroczementnyj/fibrostar/
При этом canonical на SEO-посадочную нельзя автоматически назначать любой комбинации фильтра.
В итоговой архитектуре для технических вариантов отдельно определяется стратегия индексации и canonical.
Canonical на SEO-посадочную используется только тогда, когда URL является эквивалентным или фактически дублирующим вариантом этой страницы.
Если комбинация фильтров существенно меняет ассортимент и не соответствует выбранной SEO-посадочной, канонизировать её на эту страницу только ради сокращения количества URL неправильно.
Sitemap для SEO-посадочных
Для утверждённых индексируемых страниц предусматривалось включение в sitemap.
При этом смысл был не в том, чтобы добавить туда все возможные комбинации фильтра.
В sitemap должны попадать именно выбранные SEO-страницы с постоянным URL и понятной ролью в структуре сайта.
Само ТЗ предусматривало отдельную работу с картой сайта и ЧПУ SEO-фильтров.
Хлебные крошки и редактирование страниц
Для созданных посадочных были предусмотрены хлебные крошки с микроразметкой.
Также SEO-поля таких страниц должны были редактироваться через административную часть сайта, а не быть навсегда зашиты в шаблон.
Это важно для дальнейшей SEO-работы: при изменении семантики или ассортимента не требуется дорабатывать код фильтра.
Фильтр должен пересчитывать доступные товары
SEO-фильтр проектировался не просто как набор ссылок.
После выбора значения должны пересчитываться:
- товарная выдача;
- доступные параметры;
- количество результатов.
Если по конкретному свойству нет товаров, значение должно становиться недоступным.
Одновременно изменяется URL, чтобы состояние страницы можно было восстановить.
Один товар — один URL
Отдельное требование касалось карточек товаров.
Независимо от того, через какую фильтрованную категорию пользователь нашёл товар, ссылка на саму карточку должна оставаться одной.
Иначе один товар может получить разные URL в зависимости от выбранного фильтра, что создаёт дубли страниц.
То есть SEO-фильтр меняет страницу каталога, но не должен создавать новые адреса самих товаров.
Следующий сайт — pnevmotek.com
Для pnevmotek.com задача была намного масштабнее.
Каталог промышленного оборудования нельзя фильтровать одним универсальным набором характеристик.
Например, для компрессоров важны:
- производительность;
- давление;
- мощность;
- тип двигателя;
- привод;
- ресивер;
- комплектация.
Для генераторов азота — уже другие параметры.
Для воздуходувок, сепараторов, ресиверов, осушителей и другого оборудования — свои наборы характеристик.
Поэтому основным решением стало создание единого компонента SEO-фильтра, который работает на всём каталоге, но подставляет разные профили параметров в зависимости от типа оборудования и текущего URL.
Масштаб проекта
В исходном техническом задании зафиксировано:
- 385 — страниц в матрице;
- 38 — профилей параметров;
- 57 — SEO-посадочных для винтовых компрессоров.
То есть речь шла уже не об одном фильтре для одной категории, а о проектировании масштабируемой системы для большого каталога.
Разные профили для разных типов оборудования
Для каждой группы товаров определялся собственный набор параметров.
Например, для винтовых компрессоров предусматривались:
- производитель;
- исполнение;
- серия;
- давление;
- мощность;
- производительность;
- напряжение;
- ресивер;
- осушитель;
- частотный преобразователь;
- привод;
- тип смазки;
- ступени;
- класс защиты;
- страна;
- назначение;
- цена.
Для генераторов азота:
- производитель;
- технология;
- производительность;
- чистота азота;
- давление на выходе;
- исполнение;
- ресивер;
- назначение.
Для воздуходувок:
- производитель;
- тип;
- производительность;
- избыточное давление или разрежение;
- мощность;
- привод;
- охлаждение;
- уровень шума;
- назначение.
Таким образом, пользователь не получает один гигантский список характеристик, большая часть которого не относится к выбранному оборудованию.
21 группа характеристик для компрессоров
Для компрессорного направления была подробно описана логика 21 группы параметров:
- Цена.
- Наличие.
- Вид компрессора.
- Тип двигателя.
- Исполнение.
- Ступени сжатия.
- Тип смазки.
- Комплектация.
- Бренд.
- Серия.
- Класс оборудования.
- Сфера применения.
- Производительность.
- Рабочее давление.
- Мощность.
- Напряжение.
- Количество фаз.
- Привод.
- Класс защиты двигателя.
- Объём ресивера.
- Страна производства.
Параметры при этом должны были работать не независимо, а как связанные фасеты.
Например:
- вид компрессора → определяет доступные бренды, серии и характеристики;
- бренд → определяет список серий;
- электрический двигатель → открывает напряжение и количество фаз;
- «с ресивером» → открывает выбор объёма;
- «без ресивера» → скрывает этот блок и сбрасывает его значение;
- дожимной компрессор → использует отдельные диапазоны давления.
Такая зависимая логика была отдельно заложена в ТЗ.
Нормализация товарных данных
Одной из основных сложностей оказался не сам интерфейс фильтра, а качество характеристик товаров.
Фильтр не должен искать значения в названии или свободном тексте карточки.
Для корректной работы свойства должны храниться в нормализованном виде.
Например:
8/10/13 бар
нужно разобрать на:
8 бар, 10 бар, 13 бар.
Запись:
220/380 В
должна быть преобразована в отдельные допустимые значения.
А характеристику:
с ресивером 500 л
нужно разделить минимум на:
- наличие ресивера;
- объём ресивера 500 л.
До запуска фильтра предусматривалась нормализация:
- производительности;
- давления;
- мощности;
- объёма ресивера;
- напряжения;
- количества фаз;
- брендов;
- серий;
- типа двигателя;
- вида компрессора;
- привода;
- комплектации;
- исполнения.
Это уже задача на стыке SEO, структуры каталога и товарных данных.
Не создавать SEO-страницу из каждого нового свойства
Одна из главных защит от разрастания индекса — запрет на автоматическое создание SEO-URL при каждом появлении нового значения характеристики.
Вместо этого был предусмотрен административный справочник:
набор фильтров → URL → SEO-поля → индексируемость.
То есть само наличие характеристики в карточке товара ещё не превращает её в отдельную SEO-посадочную.
Сначала нужно определить:
- есть ли самостоятельный спрос;
- достаточно ли товаров;
- не существует ли уже аналогичной категории;
- отличается ли интент;
- нужна ли поиску отдельная страница.
Белый список индексируемых SEO-посадочных
Вся структура делилась на две большие группы.
Индексируемые страницы
Для утверждённых SEO-посадочных задавались:
- отдельный ЧПУ;
- H1;
- Title;
- Description;
- текст;
- canonical;
- хлебные крошки;
- правила включения в sitemap.
Технические комбинации
Не должны автоматически превращаться в поисковые страницы:
- цена;
- наличие;
- несколько брендов;
- несколько серий;
- сортировки;
- произвольные сочетания характеристик;
- отрицательные значения вроде «без осушителя» или «без ресивера»;
- комбинации с малым количеством товаров.
Для таких вариантов в проекте предусматривался режим noindex, follow.
При этом noindex сам по себе не должен становиться единственной защитой от бесконтрольного роста URL.
Поэтому отдельно контролировалась сама логика формирования адресов: SEO-URL не создаются автоматически для каждого состояния фильтра, а индексируемые страницы существуют только в управляемом белом списке.
Существующие страницы нельзя дублировать
На pnevmotek.com уже существовали отдельные ЧПУ для:
- категорий;
- брендов;
- серий;
- типов оборудования.
Поэтому фильтр не должен создавать для них новые дубли.
Если пользователь выбирает значение, которое соответствует уже существующей странице, используется её текущий URL.
Например, если для CrossAir уже существует:
/katalog/kompressory-vintovye/crossair/
при выборе бренда нужно перейти именно на этот URL, а не создавать ещё одну страницу с тем же ассортиментом через техническую структуру фильтра.
Логика AND и OR
Для пользовательской фильтрации была определена логика сочетания фасетов.
Несколько значений внутри одной характеристики работают по принципу OR.
Например:
7 бар ИЛИ 10 бар.
Характеристики из разных групп работают по принципу AND:
10 бар + 380 В + ресивер.
После снятия одного параметра система должна проверить, существует ли точная SEO-посадочная или обычная категория для оставшегося набора. Если да — перейти на неё. Если нет — сохранить техническое состояние фильтра.
Числовые характеристики нельзя фильтровать одним способом
Отдельно прорабатывались диапазоны.
Например, производительность компрессоров может иметь множество значений:
366, 770, 1 090, 1 610, 6 350 л/мин и другие.
Поэтому выводить каждое число отдельным универсальным чекбоксом нецелесообразно.
Фактическое значение хранится как число, а в интерфейсе используются диапазоны.
Причём диапазоны отличаются для:
- винтовых;
- поршневых;
- спиральных;
- передвижных;
- дожимных компрессоров.
Для давления схема другая.
У обычных компрессоров можно использовать отдельные нормализованные значения, а для высоких давлений дожимных компрессоров — диапазоны.
То есть структура фильтра строилась вокруг реальных характеристик оборудования, а не одного универсального интерфейса.
Серверное формирование SEO-посадочных
Для pnevmotek.com в проекте было заложено серверное формирование SEO-посадочных.
Это означает, что при прямом открытии утверждённого URL в HTML-ответе должны присутствовать:
- соответствующий ассортимент;
- H1;
- Title;
- Description;
- canonical;
- остальные SEO-элементы страницы.
Доступность основного содержимого не должна зависеть только от выполнения клиентского JavaScript.
При этом JavaScript может использоваться для удобного изменения фильтра без полной перезагрузки.
Главное требование: если пользователь или поисковый робот открывает URL напрямую, сервер возвращает то же состояние страницы.
В критериях приёмки отдельно указано, что URL должен открываться напрямую с тем же набором товаров, фильтрация выполняться на серверной стороне, а товары и метаданные должны присутствовать в исходном HTML.
Интерфейс для десктопа и мобильных
Проектирование затрагивало не только SEO.
На десктопе фильтр должен находиться в левой колонке и оставаться доступным при прокрутке.
У каждого значения показывается количество подходящих товаров.
Нулевые значения скрываются или становятся недоступными.
Активные фильтры выводятся над товарной выдачей в виде отдельных элементов, которые можно снять.
Для мобильных устройств предусматривалась отдельная кнопка «Фильтр» и выезжающая панель.
После применения пользователь возвращается к товарной выдаче, а выбранные параметры сохраняются.
Восстановление состояния по URL
URL должен описывать состояние фильтра настолько, чтобы страницу можно было открыть напрямую и получить тот же результат.
Также была предусмотрена работа кнопок браузера «Назад» и «Вперёд».
При перемещении по истории должны восстанавливаться:
- выбранные значения;
- товарная выдача;
- количество товаров;
- состояние фильтра;
- URL.
Чем отличались два проекта
| rooffasad.ru | pnevmotek.com |
|---|---|
| Базовая архитектура SEO-фильтра | Масштабная фасетная система |
| Уникальные H1 и метатеги | Разные профили характеристик |
| ЧПУ для SEO-посадочных | Управляемая система ЧПУ |
| Canonical и sitemap | Белый список индексируемых URL |
| Хлебные крошки | Зависимые фасеты |
| Один товар — один URL | Повторное использование существующих категорий |
| Пересчёт выдачи | Динамический пересчёт характеристик |
| — | Нормализация товарных данных |
| — | Серверная фильтрация |
| — | 385 страниц в матрице |
| — | 38 профилей параметров |
| — | 57 SEO-посадочных |
Что было сделано
В результате проектирования была сформирована архитектура, которая разделяет три разных типа страниц.
1. Обычная категория
Например:
/sajding/
или:
/katalog/kompressory-vintovye/
Она сохраняет собственный URL и основной поисковый интент.
2. Утверждённая SEO-посадочная
Создаётся под выбранный набор характеристик и получает:
- собственный ЧПУ;
- H1;
- Title;
- Description;
- текст;
- canonical;
- хлебные крошки;
- правила включения в sitemap.
3. Техническая комбинация фильтра
Нужна пользователю для более точного подбора товара, но не становится самостоятельной SEO-страницей автоматически.
За счёт такого разделения каталог можно расширять вместе с ассортиментом без автоматического создания индексируемого URL для каждого нажатия на чекбокс.
Результат
Для rooffasad.ru была подготовлена архитектура SEO-фильтрации с ЧПУ, уникальными H1 и метаданными, правилами canonical и индексации, sitemap, хлебными крошками и защитой от появления нескольких URL одной карточки товара.
Для pnevmotek.com задача была расширена до полноценной системы фасетной навигации большого B2B-каталога.
В проекте подготовлены:
- 385 — страниц в матрице;
- 38 — профилей параметров;
- 57 — SEO-посадочных для винтовых компрессоров.
Для разных типов оборудования были определены собственные характеристики и зависимости между параметрами.
Отдельно проработаны:
- нормализация товарных данных;
- управляемый белый список SEO-посадочных;
- использование существующих URL брендов, серий и категорий;
- разделение индексируемых и технических комбинаций;
- серверное формирование SEO-страниц;
- мобильная и десктопная логика фильтра;
- требования к sitemap, canonical и метаданным;
- защита от дублей.
Главный результат этого этапа — не максимальное количество новых страниц, а управляемая архитектура SEO-фильтрации, в которой заранее определено:
какие комбинации становятся самостоятельными коммерческими посадочными;
какие используют уже существующие страницы сайта;
какие остаются только пользовательским инструментом подбора товаров.
Это позволяет масштабировать каталог и создавать новые коммерческие посадочные под поисковый спрос, не превращая каждую комбинацию характеристик в отдельный индексируемый URL.
Мало посадочных?
Пришлите адрес сайта.