SEO интернет-магазина: каталог, фильтры и карточки

Пагинация каталога

Пагинация каталога — отдельные URL копий листинга одной ветки, а не дерево узлов и не SEO самой категории.

Кирилл Бабийчук · обновлено · 5 мин чтения

Пагинация каталога — это копии одного листинга: /category/?page=2, /page/3/, PAGEN_1=4. На каждой копии другой набор плиток той же ветки. Это не дерево узлов и не SEO самой категории как документа Поиска. Какие ветки вообще заводить — структура каталога. Как уже существующая ветка становится документом — SEO категорий. Рамка трёх типов URL — в SEO интернет-магазина.

Страница 2 не «улучшает» категорию и не заменяет карточку. Она нужна, чтобы робот и человек дошли до SKU, которые не влезли на первый экран. Если этих SKU нет в sitemap и нет в <a href>, пагинация — декорация.

Копия листинга, не новый узел

У копии листинга тот же тип товара и та же задача выбора, что у первой страницы ветки. Меняется только окно: какие карточки видны сейчас. Новый узел заводят, когда появляется другой выбор («беговые» рядом с «кроссовками»). Копия ?page=2 — тот же выбор, сдвинутый по списку.

Сортировка «по цене» и пересечение цвета с размером — уже не пагинация. Это варианты того же списка. Их не индексируют как отдельные документы: Search Central прямо просит закрыть такие URL noindex или не отдавать роботам в robots.txt. Какой срез вообще достоин своего адреса — на страницах фильтров и фасетов. Здесь решается только нумерация уже выбранной ветки.

Корень /catalog/ и витрина CMS не становятся «страницей 1» для всего магазина. Пагинация живёт внутри ветки, у которой уже есть канонический URL. Иначе /shop/page/2/ плодит второй листинг без типа — ту же свалку, только с номером.

Каноникал на себя, не на первую

Google в руководстве по пагинации и догрузке (Search Central, ecommerce) считает URL последовательности отдельными страницами. Каждой дают свой устойчивый адрес, например ?page=n с абсолютным номером, не ?date=yesterday. Каноникал страницы 3 указывает на страницу 3, а не на первую. Каноникалить всю ленту на /category/ Google прямо запрещает: тогда плитки со второй и дальше для индекса как будто не существуют.

Фрагмент после # робот Google игнорирует. Ссылка #page=2 для него та же страница. Woo рисует /page/2/, OpenCart — page=, Битрикс — PAGEN_N=. Форма параметра не важна, важны три свойства: уникальный URL, тот же набор плиток при повторном заходе, ответ 200 без мягкого 404 на пустой хвост.

Яндекс в справке «Как работает поиск» пишет отдельно: атрибут rel со значениями prev и next робот не учитывает, страницы пагинации могут индексироваться и участвовать в поиске без ограничений. Google эти теги тоже больше не использует (они остались только как возможная подсказка другим системам). Закрывать page=* в robots.txt или ставить noindex на всю ленту — способ спрятать карточки, которые живут только на хвосте, а не «навести порядок».

Пустую страницу за последней отдают 404 или 301 на последнюю живую, не 200 с «товаров нет». Иначе индекс копит пустые копии.

Ссылка, которую робот видит

Googlebot ходит по href у <a>. Кнопку «Показать ещё» и жест бесконечной прокрутки он не нажимает. Если догрузка только на JavaScript без параллельной ленты ссылок, в индексе останется первый экран. Search Central для infinite scroll требует четыре вещи сразу: свой URL у каждой пачки, стабильное содержимое этого URL, последовательные <a href> между пачками и смена адреса в строке через History API, когда пачка стала основным экраном.

С каждой копии нужна ссылка на следующую. Имеет смысл держать ссылку и на первую страницу ветки: Google пишет, что так проще понять начало коллекции и что первая чаще лучше как посадочная. «Смотреть все» имеет смысл, только если полный список открывается быстро и не ломает сервер. Тысячи плиток на одном URL — это уже предел «Load more» в той же таблице Search Central, не замена нумерации.

Карточки на хвосте должны открываться с пагинации обычной ссылкой, а не только из кабинета или фида. Фид Merchant Center и Яндекс Товаров карточку в Поиск приведёт, листинг ветки — нет. Если хвост систематически не виден роботу, это уже дыра обхода, не «дизайн витрины»: постановка — SEO-аудит.

Текст и сниппет на копиях

Вводный текст категории пишут на первой странице ветки. Копировать тот же абзац на каждую копию — не «уникализация», а шум: задача выбора уже закрыта на каноне ветки. На страницах 2+ достаточно сетки, пагинатора и отличия в title вроде «страница 3», если CMS это умеет. Google для последовательности прямо разрешает одинаковые title и description: робот пытается узнать ленту и индексировать её как ряд, а не как набор новых тем.

H1 копии не должен притворяться новой категорией («Кроссовки недорого — лист 2»). Это каннибализация с документом ветки, который уже разобран в SEO категорий. Пагинатор — навигация по списку, не второй кластер.

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

Нужно ли закрывать страницы пагинации от индекса?

Нет, если на них живые карточки, которых нет на первой. Закрывают сортировки и случайные пересечения фильтров, не нумерацию той же ветки. Яндекс прямо говорит, что такие URL могут участвовать в поиске.

Куда ставить canonical на странице 2?

На саму страницу 2. Canonical на первую страницу ветки прячет хвост: Google в ecommerce-гайде по пагинации это запрещает.

Достаточно ли кнопки «Показать ещё» без ссылок?

Для посетителя — да. Для робота — нет. Нужна параллельная лента с обычными <a href> на ?page=n или эквивалент CMS. Иначе индексируется только первый экран.

Чем пагинация отличается от SEO категорий?

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