Пагинация в SEO: правильная индексация страниц каталога и блога
1. Архитектура и принцип работы
Робот заходит на первую страницу листинга, вытаскивает ссылки на карточки и на следующую страницу. Дальше идёт по цепочке page=2, page=3 и так до конца пагинации, попутно собирая URL товаров и статей. Ключевой момент — каждая страница пагинации должна быть самостоятельным документом со своим canonical на себя. Если поставить canonical со всех страниц на первую, робот выкинет из индекса page=2..N, а вместе с ними потеряет ссылки на товары, которые есть только там. Второй момент — контент: на page=2+ должны быть те же карточки, что видны пользователю, без lazy-подгрузки через JS, иначе в HTML останется пустой список. Третий — управление краулинговым бюджетом: глубокие страницы (page>10) часто закрывают в robots.txt или отдают noindex, если товаров там мало и они дублируются. Для блога схема та же, но добавляется дата публикации и хлебные крошки с номером страницы.
2. Математическая механика и триггеры ранжирования
Механика строится на трёх сигналах: canonical, robots-директивы и внутренние ссылки. Правило по умолчанию: — self-referencing. rel=next/prev Google с 2019 игнорирует как сигнал индексации, но Яндекс до сих пор учитывает для склейки и обхода, поэтому разметку оставляем. Для страниц с фильтрами и сортировкой (?sort=price_asc) ставим noindex,follow либо canonical на чистый листинг — иначе плодятся тысячи комбинаций. Контроль глубины: если page>N и на странице <5 уникальных карточек, отдаём 404 или noindex. В sitemap.xml включаем только первые 2–3 страницы пагинации, остальное робот добирает по ссылкам. Формула краулингового бюджета: crawl_budget ≈ (кол-во URL в sitemap × частота обхода) / (avg response time × нагрузка). При 50 000 SKU и пагинации по 24 товара получаем ~2100 страниц листинга — это 4% бюджета, приемлемо. Если пагинация уходит за 100 страниц, режем листинг на подкатегории.
3. Специфика в Яндекс (YATI) vs Google
Google официально не использует rel=next/prev с 2019 года, полагаясь на ссылочную связность и canonical. Яндекс rel=next/prev ещё читает и применяет для определения последовательности и склейки. Google жёстче относится к soft-404 на пустых страницах пагинации — отдавайте 404, а не 200 с «ничего не найдено». Яндекс лояльнее к параметрам ?page=, но быстрее выкидывает в «малополезные» страницы с дублями. В Яндекс.Вебмастере смотрите отчёт «Страницы в поиске» и «Исключённые страницы» — там видно, сколько page=N попало под «дубли». В Google Search Console — отчёт «Индексирование страниц», фильтр по «Альтернативная страница с тегом canonical»: если там висят page=2..N, значит canonical настроен неправильно. Обе системы любят, когда пагинация доступна по чистым ЧПУ /page/2/, а не по параметрам.
4. Нормативы SLA и диагностическая матрица
| Параметр / Метрика | Эталон по SLA | Критическая ошибка |
|---|---|---|
| Доля страниц пагинации в индексе (page=2..N) | 70–90% от реального числа страниц листинга | <30% или >100% (дубли) |
| Canonical на себя на page=2+ | 100% страниц | <90% |
| Страницы пагинации с soft-404 (200 на пустой листинг) | 0 | >5% от всех page=N |
5. Пошаговый инженерный протокол внедрения
- Сделайте self-canonical на каждой странице пагинации и уберите canonical на первую страницу — проверьте через Screaming Frog в колонке Canonical URL.
- Оставьте rel=next/prev в для Яндекса, добавьте в sitemap только page=1..3, остальные страницы держите доступными по ссылкам.
- Закройте noindex,follow все URL с параметрами сортировки и фильтров (?sort=, ?filter=), оставив в индексе только чистые листинги.
- Настройте 404 для страниц пагинации за пределами реального количества товаров и проверьте, что карточки на page=2+ отдаются в HTML без JS-подгрузки.
<link rel="canonical" href="https://site.ru/catalog/foo/?page=2">
<link rel="prev" href="https://site.ru/catalog/foo/?page=1">
<link rel="next" href="https://site.ru/catalog/foo/?page=3">
<!-- для страниц с сортировкой -->
<meta name="robots" content="noindex,follow">
<!-- правило: если page > total_pages → HTTP 404 -->
6. Типичные ошибки при оптимизации
- Canonical со всех страниц пагинации на первую — робот выкидывает page=2..N и теряет ссылки на товары, которых нет на первой странице.
- Пустые страницы пагинации отдают 200 OK вместо 404 — Google помечает их как soft-404 и снижает доверие к листингу.
- Lazy-load товаров через JS без SSR — в HTML страницы пагинации пустой список, робот не находит ссылки на карточки и не обходит каталог.
