В каталоге индексируются только комбинации фильтров, на которые есть реальный спрос и которые имеют уникальный контент, — например «кроссовки мужские 42 размер». Все остальные комбинации (цвет + цена + бренд + порядок сортировки одновременно) не должны попадать в индекс, потому что они повторно показывают один и тот же список товаров в разных порядках и забирают силу у реальных страниц каталога. Эта проблема называется раздуванием индекса: в индексе оказывается больше «производных» URL, чем у самого сайта.
Откуда появляются страницы фильтров
На сайте с каталогом каждый признак фильтра добавляет в URL один параметр. Если три фильтра — цвет, размер, бренд — и в каждом по 10 значений, по комбинаторике получается более тысячи URL. К ним добавляются сортировка (sort=price_asc), отображение (view=grid), пагинация (page=7) и параметры сессии. На практике такой сайт, имея несколько сотен товаров, предлагает к сканированию десятки тысяч адресов.
Google называет это "faceted navigation" и дал отдельную рекомендацию в документации: crawling-managing-faceted-navigation. Главная мысль простая — такие URL могут расти бесконечно, поэтому сам сайт должен решить, какие из них оставить открытыми.
В чём вред
Во-первых — ресурс сканирования. Робот тратит время, выделенное на сайт, не на новые карточки товаров, а на сотни вариантов одного и того же списка. Новые товары попадают в индекс позже.
Второе — каннибализация. Категория «кроссовки», фильтр «кроссовки + чёрный» и фильтр «кроссовки + чёрный + 42» конкурируют за один и тот же запрос. Google сам выбирает, какой из них показывать, и выбор оказывается нестабильным.
Третье — сигнал качества. На многих страницах фильтров бывает 2–3 товара или вообще нет. Нахождение в индексе страницы с пустым результатом не улучшает общую оценку качества сайта. Этот аспект напрямую связан с разделом индексации в списке SEO-аудита.
Какие фильтры стоит индексировать
Если выполняются три условия сразу — страница остаётся открытой:
- Есть спрос в поиске. Люди ищут «кроссовки 42 размер», а не «чёрные, 42 размер, 300–400 тысяч, от дешёвых к дорогим».
- Результат стабильный и достаточный. В списке постоянно десятки товаров, он не пустеет в зависимости от сезона.
- На странице есть уникальный элемент. Свой title/description, короткий текст, возможно, свой H1.
| Тип страницы | Индекс | Причина |
|---|---|---|
Категория: /krossovka/ |
Да | Основной спрос |
Один атрибут: /krossovka/42-razmer/ |
Да | Ищется в поиске |
Бренд + категория: /krossovka/nike/ |
Да | Есть спрос |
| Комбинация двух-трёх атрибутов | Обычно нет | Низкий спрос, контент повторяется |
| Ценовой диапазон | Нет | Бесконечные варианты |
| Сортировка, отображение, размер страницы | Нет | Контент одинаковый |
| Фильтр с пустым результатом | Нет | Пользователю не нужен |
Технические инструменты и их границы
Есть четыре инструмента, и они не заменяют друг друга:
| Инструмент | Что делает | Чего не делает |
|---|---|---|
robots.txt Disallow |
Останавливает сканирование | Не удаляет из индекса |
meta-тег noindex |
Исключает из индекса | Не останавливает сканирование |
rel=canonical |
Указывает основной вариант дублирующегося контента | Это рекомендация, а не команда |
| Вообще не давать ссылку | URL не будет найден | Не работает, если есть внешняя ссылка |
Самая частая ошибка — закрыть URL в robots.txt и одновременно поставить noindex. Робот не может открыть страницу, поэтому не видит noindex; URL может остаться в индексе без описания. Выберите один из двух вариантов: если нужно исключить из индекса — поставьте noindex и разрешите сканирование; если страница ещё не в индексе и нужно просто сэкономить ресурс — robots.txt.
Разделите структуру URL заранее
Надёжное решение — вынести индексируемые фильтры в «чистый» путь (path), а остальные — в параметры. Тогда правило умещается в одну строку:
# Индексируется — в виде path
/krossovka/
/krossovka/nike/
/krossovka/42-razmer/
# Не индексируется — в виде параметров
/krossovka/?color=qora&price=300000-400000
/krossovka/?sort=price_asc
# robots.txt
User-agent: *
Disallow: /*?sort=
Disallow: /*?view=
Disallow: /*?price=
Allow: /*?page=
Порядок параметров тоже важен: ?color=qora&size=42 и ?size=42&color=qora — это два разных URL. В backend всегда выводите параметры в одном и том же алфавитном порядке, иначе появятся две копии одного списка. Хранить значения фильтров в #-фрагменте тоже не рекомендуется — Google не принимает фрагмент как отдельную страницу, и контент может вообще не попасть в индекс.
Не путайте пагинацию и сортировку
Пагинация и сортировка — не одно и то же. ?page=2 — это другой список товаров, то есть реально новый контент; его нужно оставить открытым для сканирования, иначе робот не найдёт карточки товаров внутри списка. ?sort=price_asc показывает те же товары в другом порядке — нового контента нет.
Поэтому делать canonical для page=2 на первую страницу — ошибка: робот может посчитать её дублем и не обратить серьёзного внимания на ссылки внутри. Правильный подход — каждая страница пагинации должна быть canonical для себя, а варианты сортировки должны иметь canonical на основную страницу без фильтров. Не полагайтесь на теги rel="next" и rel="prev": Google официально объявил, что с 2019 года перестал использовать их как сигнал для индексации.
Управление через внутренние ссылки
Робот находит страницу в основном по ссылке. Значит, само отсутствие ссылок на комбинации фильтров, которые не должны индексироваться, — сильный инструмент. На практике: панель фильтров может менять результат через JavaScript, но каждый чекбокс не должен существовать в HTML как <a href>. Наоборот, индексируемые страницы фильтров — «42 размер», «Nike» и т. п. — должны быть связаны видимой ссылкой со страницы категории.
Это структура pillar и cluster в каталоге: категория — pillar, выбранные страницы фильтров — cluster. При построении каталога Bisyor.uz ключевое решение тоже принималось на этом этапе: какие срезы становятся отдельными страницами, а какие остаются только элементами интерфейса.
Как проверить
- В отчёте Pages в Search Console сравните количество проиндексированных URL с реальным числом страниц на сайте. Если разница в несколько раз — есть раздувание.
- Откройте в том же отчёте списки "Duplicate without user-selected canonical" и "Crawled — currently not indexed": URL фильтров обычно накапливаются именно там.
- В поиске вручную проверьте, попали ли URL с параметрами в индекс, запросом вида
site:sayt.uz inurl:sort=. - Посмотрите в логах сервера, какие адреса робот запрашивает чаще всего, — это самый точный источник.
- Перед закрытием проверьте трафик по каждому шаблону: не ставьте
noindexна страницу фильтра, которая уже приводит посещаемость.
После изменений результат не появится сразу — чтобы URL вышли из индекса, робот должен повторно открыть их, это займёт недели.
Часто задаваемые вопросы
Потеряю ли я трафик, если закрою страницы фильтров?
Если закрываемые страницы сейчас не приводят посещаемость — нет. Поэтому порядок такой: сначала проверьте в Search Console клики по каждому шаблону, затем закройте комбинации с нулевыми кликами и дублирующимся контентом. Страница фильтра с трафиком, наоборот, должна усиливаться — для неё добавляется собственный текст и ссылка из категории.
Сколько страниц фильтров нужно оставить открытыми?
Точного числа нет, критерий — спрос. Обычно для одной категории это несколько десятков: срезы по самому востребованному одному атрибуту (размер, бренд, основной тип). Комбинация двух атрибутов открывается только если её явно ищут.
Могу ли я сделать это сам или нужен разработчик?
Настройка robots.txt и meta-тегов — это работа в консоли. Но изменение структуры URL (вынос параметров в path, унификация порядка параметров) выполняется на стороне backend. Если каталог уже работает, потребуется 301-редирект со старых URL на новые — эту часть без разработчика не сделать.
Считается ли раздувание индекса штрафом?
Нет, это не отдельная санкция. Вред косвенный: ресурс сканирования тратится впустую, страницы конкурируют между собой, а доля низкокачественных страниц на сайте растёт. Санкции ожидать не стоит, но рост замедлится.
На сайте с каталогом, если стратегия индексации определена до написания интерфейса фильтров, потом не придётся собирать обратно тысячи URL. Если в вашем проекте нужно разобрать этот слой — порядок работы описан на странице услуг.