Фасетная навигация — интерфейс фильтрации товаров в интернет-магазинах, позволяющий пользователям фильтровать по цвету, размеру, бренду, материалу, ценовому диапазону и другим атрибутам — является одним из крупнейших источников раздувания индексации в SEO для e-commerce. Категория товаров с 5 типами фильтров, каждый с 10 возможными значениями, теоретически может генерировать миллионы URL-комбинаций из нескольких сотен товаров.
Суть проблемы: большинство комбинаций фасетных фильтров создаёт тонкий, дублированный или почти дублированный контент без ценности для ранжирования. Обход Googlebot всех этих вариантов расточает краулинговый бюджет, размывает авторитет и создаёт проблемы индексации, способные навредить основным страницам категорий.
Проблема взрыва URL
Рассмотрим категорию одежды с такими фильтрами:
- Цвет: 8 вариантов
- Размер: 12 вариантов
- Бренд: 20 вариантов
- Материал: 5 вариантов
- Ценовой диапазон: 6 вариантов
Каждая комбинация создаёт уникальный URL: /clothing?color=blue&size=M&brand=acme, /clothing?color=red&size=L и так далее. Комбинаторное пространство огромно. Большинство платформ интернет-магазинов по умолчанию генерируют уникальные, краулируемые URL для каждой комбинации фильтров.
Канонические теги для фасетных URL
Фундаментальный подход: канонические теги на страницах с фасетными фильтрами, указывающие на страницу категории без фильтров.
<!-- На /clothing?color=blue -->
<link rel="canonical" href="https://example.com/clothing/" />
<!-- На /clothing?color=blue&size=M -->
<link rel="canonical" href="https://example.com/clothing/" />
Это сообщает Google, что отфильтрованные представления не являются основной страницей — таковой является категория без фильтров. Ссылочный капитал от любых ссылок на отфильтрованные URL консолидируется в каноничном.
Исключение: ценные комбинации фильтров. Некоторые фасетные комбинации представляют реальный поисковый спрос — «синие кроссовки для бега размер 43» может иметь собственный объём поиска. Для таких высокоценных комбинаций стоит создавать индексируемые страницы с фильтрами, а не канонизировать их к родительской категории. Это требует уникальных title, meta description и H1 для каждой комбинации фильтров — превращая их в полноценные посадочные страницы.
Noindex для отфильтрованных URL
Более сильный сигнал, чем canonical: применение <meta name="robots" content="noindex, follow"> к URL с фильтрами. Это явно указывает Google не индексировать страницу с фильтром. Google всё равно будет следовать ссылкам на странице (обнаруживая товары), но не включит отфильтрованный URL в индекс.
Комбинированный подход: noindex для комбинаций фильтров без самостоятельной поисковой ценности, плюс правильная оптимизация и индексируемость для высокоценных комбинаций фильтров, представляющих реальный поисковый интент.
Блокировка краулинга через robots.txt
Для фильтров, реализованных через параметры URL (например, ?color=blue), robots.txt может блокировать Googlebot от обхода определённых паттернов параметров:
User-agent: Googlebot
Disallow: /*?color=
Disallow: /*?size=
Disallow: /*?sort=
Это жёсткая блокировка — Googlebot не будет обходить эти URL. Товары, доступные только через отфильтрованные URL, всё равно будут обнаружены через XML-карты сайта и ссылки на страницах категорий, но сами комбинации фильтров не будут обходиться.
Предупреждение: блокировка через robots.txt для параметров — грубый инструмент. Если тот же параметр используется для чего-то ценного (например, языкового или регионального параметра), массовая блокировка создаёт проблемы.
JavaScript-рендеринг фильтров без изменения URL
Наиболее чистый технический подход с точки зрения краулингового бюджета: реализация фильтров через JavaScript, обновляющий отображаемые товары без изменения URL. URL категории остаётся /clothing/ независимо от применённых фильтров. Googlebot видит только страницу по умолчанию (без фильтров).
Компромисс:
- Плюс: нулевой взрыв URL, нулевые потери краулингового бюджета на фильтры
- Плюс: весь ссылочный капитал концентрируется на URL категории
- Минус: пользователи не могут поделиться или добавить в закладки отфильтрованное представление
- Минус: ценные комбинации фильтров, которые могли бы ранжироваться, не получают отдельных посадочных страниц
Этот подход хорошо работает для ритейлеров, у которых отфильтрованные представления не имеют самостоятельного поискового спроса. Он менее подходит для ритейлеров, где комбинации фильтров имеют собственный объём поиска.
Исключение из карт сайта
XML-карты сайта должны содержать только URL, которые вы хотите проиндексировать. Фасетные URL с фильтрами, не предназначенные для индексации, не должны присутствовать в картах сайта. Это не предотвращает краулинг, но убирает положительный сигнал индексации, который даёт включение в карту сайта.
Аудит существующего сайта
Для оценки ситуации с фасетной навигацией на существующем сайте:
- Проверьте отчёт Coverage в Google Search Console — сравните количество проиндексированных URL с реальным количеством товаров для выявления избыточной индексации
- Используйте краулер для подсчёта пермутаций фасетных URL, обнаруживаемых в настоящий момент
- Проверьте robots.txt на наличие существующей обработки параметров
- Определите, какие комбинации фильтров (если таковые есть) имеют самостоятельный поисковый спрос, достойный индексируемых страниц
- Реализуйте соответствующие сигналы (canonical, noindex, robots.txt, JS-рендеринг) в зависимости от архитектуры сайта и профиля поискового спроса
Цель — не минимизация индексации ради самой себя, а направление краулингового бюджета на страницы, которые могут и должны ранжироваться, а не на комбинаторный шум фильтров.