Фасетная навигация: как магазин сам банит себя в поиске
АйТи Фреш
IT-аутсорсинг и бизнес

Фасетная навигация против SEO: кто на самом деле режет видимость каталога

Автор: , директор ООО «АйТи-Фреш» · · ~12 мин чтения
Робот заблудился в лабиринте одинаковых коридоров с куртками
Фильтры каталога плодят тысячи дублей, и робот поисковика тонет в них

Фасетная навигация — фильтры по цвету, размеру, цене, бренду, наличию — прекрасная вещь для покупателя и тихая мина для SEO. Каждая комбинация фильтров рождает отдельный адрес. На каталоге в пару тысяч товаров таких адресов набираются не сотни, а десятки тысяч. Поисковик смотрит на эту гору почти одинаковых страниц, решает, что перед ним мусор, и начинает хуже показывать весь каталог. Не только фильтры. Карточки тоже. Те самые, которые должны продавать.

Фильтры не бывают безопасными по умолчанию

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

Сам по себе интерфейс фильтрации ни в чём не виноват. Он поднимает конверсию. Проблема начинается, когда каждая комбинация попадает в индекс как самостоятельная «уникальная» страница.

И вот почему это происходит почти всегда. Фильтры придумывает маркетинг, рисует дизайнер, делает фронтендер. Человека, который отвечает за индексацию, зовут потом. Когда уже упало.

Фильтр без правил индексации — это не фича. Это генератор дублей с красивыми чекбоксами.

Глазами робота: тысяча одинаковых курток

Робот заходит на сайт. Видит «куртки красные размер M». Потом «куртки размер M красные» — другой порядок параметров, тот же товар, тот же текст. Для робота это два адреса. По сути — дубль.

Когда таких пар и троек тысячи, одновременно происходят две неприятности:

  1. Индекс раздувается бесполезными страницами.
  2. Сигналы релевантности размазываются. Вместо одной сильной страницы категории получается двадцать слабых, и ни одна не дотягивает до топа.

Отдельный сорт мусора — комбинации, на которые нет спроса. Пять редких параметров одновременно. Никто так не ищет. Никогда. Но робот исправно тратит на такие страницы время.

Crawl budget: почему новинки не попадают в поиск

У любого сайта ограничен ресурс обхода — crawl budget, то есть сколько страниц робот готов и может просканировать на конкретном хосте за период. Это касается не только гигантских порталов.

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

Как это выглядит на практике:

Робот — не бесконечный стажёр. Если кормить его мусором, на нормальную еду у него не останется аппетита.

Откуда берутся дубли

ИсточникКак возникаетЧто обычно делают
Порядок параметров в URL?color=red&size=m и ?size=m&color=red дают один результатЕдиный порядок параметров и canonical
Сортировки и «показывать по 20/40/60»Тот же набор товаров, другие служебные параметрыnoindex,follow, для Яндекса — Clean-param
Комбинации без спросаПять фильтров сразу, такого никто не ищетЗакрыть от индексации, не генерировать ссылки
JS/AJAX-фильтрыКонтент меняется без адреса или плодятся мусорные параметрыСерверный рендеринг ключевых страниц, контроль генерации URL

Canonical: лекарство, которое легко передозировать

Тег rel="canonical" говорит поисковику, какая версия из нескольких похожих страниц основная. Для служебных вариаций — сортировки, количества товаров на странице — canonical на базовую категорию работает. Это описано и в документации Google, и в любом приличном руководстве по технической оптимизации.

Беда начинается, когда canonical ставят «на автомате».

Две ошибки встречаются чаще всего. Первая: на странице несколько противоречащих друг другу канонических ссылок. Вторая: canonical ведёт на страницу с другим содержимым — например, с фильтра, который реально меняет набор товаров. В обоих случаях поисковик либо игнорирует тег, либо склеивает не то. И из индекса вылетают как раз нужные посадочные — вроде «кроссовки мужские 42 размер».

Ещё момент, о котором забывают. Canonical — это подсказка, а не запрет обхода. Робот всё равно может ходить по такой странице. Хотите убрать комбинации из обхода — нужны другие инструменты.

Главная тропа к двери магазина среди исчезающих дорожек
Canonical указывает роботу главную страницу среди копий

noindex,follow: рабочая лошадка для фильтров

Мета-тег <meta name="robots" content="noindex, follow"> означает: страницу в индекс не брать, но по ссылкам с неё ходить. Для большинства фильтров без собственного спроса это ровно то, что нужно. Страница работает, товары на ней найдутся через карточки, а сама она не конкурирует в выдаче с категорией.

Теперь грабли. Огромные, ржавые, с гарантией.

Нельзя одновременно закрыть страницу в robots.txt через Disallow и поставить на неё noindex. Робот не может скачать запрещённую страницу — значит, не увидит и тег. Страница может застрять в индексе дольше, чем вы рассчитывали. Именно так выглядит «доработка фильтров» штатным программистом, который прочитал два гайда и применил оба одновременно.

Clean-param: только для Яндекса

У Яндекса есть отдельная директива в robots.txt — Clean-param. Она сообщает роботу, какие GET-параметры не меняют содержимое страницы и не должны считаться признаком новой страницы. Яндекс описывает её в своей документации и в блоге для вебмастеров.

Google эту директиву не поддерживает. Вообще.

Отсюда вывод, неприятный для любителей «одной волшебной строки». Универсального robots.txt на два поисковика не существует. Под Яндекс — Clean-param для сортировок, пагинации, UTM-меток. Под Google — canonical и noindex. Магазин, настроенный «по одному гайду», получает забавную картину: в одной поисковой системе каталог чистый, в другой продолжает размножаться почкованием.

Disallow: кувалда, а не скальпель

Disallow в robots.txt запрещает сканировать путь или параметр. Страница вообще не обходится. Для корзины, личного кабинета, служебных скриптов — правильно. Для фильтров каталога — очень осторожно.

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

Вот здесь я злюсь по-настоящему. Видел десятки robots.txt, собранных копипастой с чужих сайтов: строки на всякий случай, маски «чтобы наверняка», директивы под поисковики, которые давно их не читают. Подрядчик сдал работу, получил деньги, исчез. А владелец месяцами не понимает, почему «правильно настроенный» robots.txt не убирает дубли, но при этом прекрасно убирает продающие страницы. Robots.txt, собранный копипастой, — это не настройка. Это лотерея, в которой вы играете своим трафиком.

Кувалда разбивает стену дверей рядом со скальпелем
Запрет в robots.txt — кувалда, а не точный инструмент

Пагинация: rel=next/prev уже не спасают

Раньше страницы постраничной навигации связывали атрибутами rel="next" и rel="prev". Они подсказывали поисковику последовательность. Google примерно с 2019 года не использует их как сигнал индексации пагинации. Ошибкой они не считаются, вреда не приносят. Пользы для Google — тоже.

Значит, вся нагрузка ложится на другое:

Canonical со второй страницы на первую — классика жанра. Товары со второй страницы после этого внезапно становятся хуже видны. Удивительно, правда?

AJAX-фильтры: быстро для людей, туманно для роботов

Всё больше магазинов фильтруют без перезагрузки: клик — и список товаров меняется через AJAX. Адрес при этом то меняется, то нет. Покупателю удобно.

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

Надежда — не стратегия индексации.

Сценарий: одежда и «удобные» фильтры

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

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

Сценарий: мебель и «улучшенная» сортировка

Мебельный магазин добавляет сортировки — по цене, новизне, рейтингу — и выбор «показывать 20, 40 или 60». Каждый вариант получает параметр в URL. Разработчики честно всё сделали: сортировка работает.

Только все комбинации открыты для индексации, canonical нет, в robots.txt пусто. Поисковик индексирует десятки версий одной категории с идентичным содержимым и не понимает, какую показывать. Позиции по основным коммерческим запросам опускаются. На сайте при этом «ничего не ломалось». Формально.

Что делаем мы в АйТи Фреш и чем это отличается

Типичный ИТ-подрядчик получает задачу «сделать фильтры» и делает фильтры. Вёрстка, скорость, анимация чекбоксов. Аудит индексации в смету не входит — и вы узнаёте о проблеме, когда трафик уже упал. Дешёвый конструктор сайтов часто вообще не даёт управлять canonical и robots.txt на нужном уровне: фильтры работают «как есть», и повлиять на это невозможно.

Мы делаем наоборот:

Чек-лист на один день

Пока очередной фильтр не съел каталог

Подозреваете, что каталог теряет видимость из-за фильтров, сортировок или наследства от прошлого подрядчика? Напишите нам в АйТи Фреш. Проведём технический аудит индексации, настроим canonical, noindex и Clean-param под оба поисковика и возьмём сервер магазина на обслуживание, чтобы следующее «удобное улучшение» не обрушило трафик снова.

Частые вопросы

Сколько дублей — уже критично?

Универсального порога нет. Смотрите на соотношение: если страниц фильтров и сортировок в индексе кратно больше, чем карточек и категорий, индексацией никто не управляет.

Можно просто закрыть все фильтры и забыть?

Нет. Популярные сочетания — размер плюс бренд, цвет плюс тип — имеют реальный спрос и должны быть самостоятельными посадочными страницами. Закроете всё подряд — отдадите этот трафик конкурентам.

Чем canonical отличается от noindex?

Canonical указывает основную версию среди похожих страниц и помогает склеить сигналы. Noindex прямо запрещает брать страницу в индекс, есть у неё дубли или нет.

Если canonical уже настроен, Clean-param нужен?

Для Яндекса — да. Инструменты близкие, но работают по-разному: Clean-param влияет на обход параметров, canonical — на склейку сигналов уже найденных страниц.

Почему трафик падает не сразу, а через недели?

Роботу нужно время, чтобы обойти новые адреса, добавить их в индекс и перераспределить сигналы между дублями. Эффект накопительный — поэтому причину ищут где угодно, только не в недавно добавленном фильтре.

Отказаться от AJAX-фильтров?

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

Как понять, что виноваты именно фильтры?

Посчитайте долю URL с параметрами в индексе и в логах обхода. Если она аномально велика относительно числа товаров, начинать разбор стоит именно отсюда.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

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

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

© ООО «АйТи-Фреш» · Москва · Все статьи