Пагинация и SEO: как настроить страницы списка без дублей

Как сделать страницы списка доступными для обхода, не создавать дубли и согласовать canonical, фильтры, сортировки и бесконечную прокрутку.

Поисковый робот проходит последовательность страниц пагинации

Короткий ответ: каждой части списка нужны постоянный URL, self-canonical, HTML-ссылки и предсказуемый состав. Page=1 не должен дублировать категорию, а номер за границей — отвечать пустой страницей с кодом 200. Фильтры, сортировки и размер выдачи проектируют отдельно, иначе их комбинации создадут множество похожих URL.

Не закрывайте всю цепочку в robots.txt и не направляйте canonical всех страниц на первую: робот может потерять путь к глубоким элементам. Корректная схема не гарантирует индексацию каждого номера; она создаёт понятную структуру без дублей и бесконечного обхода параметров.

Что считать пагинацией

Пагинация делит список на части: /catalog/, /catalog/?page=2, /catalog/?page=3. Фильтр меняет состав выдачи, сортировка — порядок. Механизмы могут сочетаться, но для сочетаний нужны правила.

До разработки составьте карту URL: категория, вторая и последняя страницы, page=1, сортировки, фильтры и ошибочные номера. Для каждого задайте статус, canonical, robots, sitemap и внутренние ссылки.

Базовая схема

  1. Каждая часть списка открывается по своему URL без предварительного клика или запуска сценария.
  2. Страница 2 канонизирует страницу 2, страница 3 — страницу 3.
  3. Начало списка доступно по одному адресу; page=1 не образует индексируемую копию.
  4. Переходы имеют href. JavaScript улучшает интерфейс, но не остаётся единственным способом продолжить просмотр.
  5. Номер за пределами списка возвращает статус отсутствия, а не пустой шаблон с кодом 200.

Как настроить пагинацию

1. Выберите единый формат URL

Подойдут и параметр ?page=2, и путь /page/2/. Важнее единообразие внутренних ссылок, canonical, редиректов и серверной логики. Нормализуйте регистр, завершающий слеш, порядок и кодирование параметров: ?page=2&sort=popular и ?sort=popular&page=2 не должны становиться разными страницами лишь из-за порядка.

Все ссылки на начало ведите на чистый URL категории. Если ?page=1 уже доступен, обычно уместен 301-редирект на базовый адрес. Проверьте, что он не создаёт цепочку.

2. Оставьте ссылки в HTML

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

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

Проведите обход без JavaScript, затем с рендерингом. Если продолжение находится только во втором случае, навигация чрезмерно зависит от клиента. Подробнее — в статье о JavaScript SEO и рендеринге.

3. Настройте canonical по содержимому

Canonical всех страниц на первую — ошибка: четвёртая часть содержит другие элементы и не является точной копией первой. Базовый вариант — self-canonical каждой рабочей страницы на её чистый URL.

Сортировка или вид отображения могут канонизироваться на основной URL номера, если набор тот же. Фильтр с самостоятельным спросом нельзя сводить к общей категории, если он развивается как посадочная.

Canonical — сигнал о предпочтительном адресе, а не запрет на обход. Он не заменяет редирект для page=1, не удаляет мусорные URL и не исправляет ссылки, которые их создают. Сверить canonical с robots и sitemap поможет чек-лист технической гигиены сайта.

4. Определите индексируемый контур

Универсального правила нет. Проверьте:

  • есть ли на продолжениях уникальные доступные элементы;
  • находятся ли они по другим внутренним ссылкам;
  • получают ли страницы показы и входы;
  • конкурируют ли они с основной категорией;
  • насколько стабилен порядок;
  • возникают ли пустые или почти пустые хвосты.

Если странице назначен noindex, робот должен открыть URL и прочитать директиву. Не блокируйте этот адрес в robots.txt: метатег может остаться недоступен. Noindex также не заменяет устранение источников бесконечных параметров.

5. Разведите фильтры и сортировки

Сортировкам обычно не нужны индексируемые URL, SEO-ссылки и записи в sitemap. Для них задают согласованный canonical и ограничивают комбинации.

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

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

6. Обработайте границы списка

Если в категории пять страниц, page=9999 не должен отвечать кодом 200 и сообщением «ничего не найдено». Обычно нужен 404 или иной предусмотренный статус отсутствия.

Если последняя страница исчезла, обновите навигацию и sitemap, проверьте доступность карточек, затем меняйте ответ бывшего URL. Не перенаправляйте неверный номер на начало: точной замены у пустого хвоста нет. Page=1 — отдельный случай.

Порядок элементов должен быть стабильным. Иначе карточки скачут между страницами, временно дублируются или выпадают. При равных значениях основного критерия добавьте устойчивый вторичный критерий, например ID.

7. Согласуйте sitemap и перелинковку

В sitemap включайте только канонические индексируемые URL. Сортировки, дубли первой страницы и случайные параметры там не нужны. Приоритетны конечные карточки, услуги и статьи.

Не заставляйте робота проходить длинную цепочку ради важного материала. Используйте рубрики, подборки, связанные материалы и контекстные ссылки. Практические принципы собраны в гайде по внутренней перелинковке для SEO.

Пример: каталог из 240 услуг

Каталог показывает по 24 позиции и состоит из десяти страниц. Интерфейс умеет сортировать услуги и менять размер выдачи. Без правил появляются несколько версий каждого номера, page=1 и пустые хвосты.

Основными становятся размер 24 и порядок по умолчанию. Начало открывается по /services/, продолжение — по /services/?page=2 и далее. ?page=1 получает 301-редирект на /services/. Каждая существующая страница имеет self-canonical. Ссылки «предыдущая» и «следующая» присутствуют в HTML; JavaScript может перехватывать клик и обновлять список без перезагрузки.

Сортировки остаются пользовательскими режимами: их нет в sitemap и внутренних SEO-ссылках. Недопустимый размер выдачи и номер больше десяти возвращают 404. У каждой услуги есть отдельная ссылка, её канонический URL включён в sitemap.

После релиза проводят обход без JavaScript и с рендерингом, сверяют коды, canonical и серверные логи. Цель — не добиться индексации ровно десяти страниц, а сохранить доступность услуг и не отправлять робота по бесконечным комбинациям.

Ограничения и контроль по данным

Даже идеальная настройка не гарантирует индексацию каждого URL. Оценивайте обход, логи и доступность конечных карточек, а не один отчёт.

В логах разделите запросы к чистым страницам, page=1, рабочим номерам, пустым хвостам, фильтрам и сортировкам. Смотрите частоту обхода и коды ответа. Если робот тратит запросы на тысячи сортировок, ищите источник адресов в ссылках, шаблоне или интерфейсе. Если он редко доходит до карточек, проверяйте глубину и дополнительные маршруты. Подробнее — в материале про логи сервера для SEO.

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

Частые ошибки

  1. Canonical всех страниц на первую. Разные части объявляются дублями.
  2. Блокировка в robots.txt. Робот не видит содержимое, ссылки и директивы.
  3. Навигация только через JavaScript. В HTML нет доступного следующего URL.
  4. Индексация всех комбинаций. Пагинация перемножается с фильтрами, сортировками и размером выдачи.
  5. Отдельный page=1. Возникает дубль категории.
  6. Код 200 у пустого хвоста. Любой номер выглядит существующим.
  7. Нестабильный порядок. Появляются дубли и временные пропуски.
  8. Чрезмерная глубина. Важные карточки доступны лишь после множества переходов.
  9. Проверка только интерфейса. Он может скрывать неверные статусы и отсутствие ссылок в исходном HTML.
  10. Ожидание гарантированной индексации. Техническая схема создаёт условия, но не управляет решением поисковика.

Практический чек-лист

  • выбран единый формат URL;
  • page=1 не создаёт индексируемый дубль;
  • существующие номера открываются напрямую и отвечают 200;
  • номер за границей возвращает статус отсутствия;
  • рабочие страницы имеют self-canonical;
  • соседние страницы связаны без зависимости от JavaScript;
  • бесконечная прокрутка опирается на постоянные URL;
  • сортировки и размер выдачи не создают бесконечный индекс;
  • полезные фильтры отделены от технических;
  • sitemap содержит выбранные канонические URL;
  • карточки доступны по обычным внутренним ссылкам;
  • важные элементы не зависят от чрезмерной глубины;
  • обход с JavaScript и без него даёт ожидаемые URL;
  • логи не показывают постоянный обход мусорных параметров;
  • после изменения списка проверена последняя страница;
  • правила включены в документацию и регрессионные тесты.

Как поставить задачу разработчику

Приложите таблицу с базовым URL, страницей 2, page=1, сортировкой, разрешённым фильтром, пустым и слишком большим номером. Для каждого примера укажите ожидаемые status, canonical, robots, ссылки и наличие в sitemap.

Критерии приёмки: ссылки есть в HTML; прямое открытие и обновление сохраняют нужную часть; ошибка API не даёт пустую страницу с 200; параметры нормализуются; карточки находятся без сценариев.

Черновик таблицы и тест-кейсов можно подготовить в нейросети XelaGroup, но итог проверяйте запросами к серверу, краулером и логами. Если нужен разбор конкретного каталога с приоритетами исправлений, напишите в Telegram.

FAQ

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

Не автоматически. Сначала определите её роль в обнаружении элементов и изучите данные. Для одной категории разумно оставить цепочку открытой, для другой — ограничить индексируемый контур. Robots.txt не заменяет проектирование URL.

Можно ли ставить canonical со второй страницы на первую?

Обычно нет: наборы элементов различаются. Базовый вариант — self-canonical. Исключение возможно только при реальной эквивалентности содержимого.

Нужны ли rel="next" и rel="prev"?

Их можно оставить как дополнительную семантику, если это соответствует требованиям проекта, но строить на них стратегию не стоит. Постоянные URL, обычные ссылки и корректные статусы важнее. Перед внедрением сверьтесь с актуальной документацией нужных поисковых систем.

Как совместить пагинацию и бесконечную прокрутку?

Каждая порция получает постоянный URL и доступные ссылки. JavaScript подгружает элементы и при необходимости обновляет адрес, но прямое открытие и перезагрузка воспроизводят нужное состояние.

Добавлять ли страницы пагинации в sitemap.xml?

Только если они входят в индексируемый контур. Конечные карточки и статьи в любом случае должны иметь собственные канонические URL и внутренние ссылки. Sitemap не заменяет навигацию.

Что делать, если товары часто меняют позиции?

Используйте стабильную сортировку по умолчанию. После изменений проверяйте последние страницы, дубли и пропуски. Для динамичного каталога особенно важны прямые ссылки на карточки и актуальный sitemap.

Как понять, что всё работает?

Сравните обход до и после: канонические URL, пустые страницы, дубли, глубину карточек и мусорные параметры. Затем проверьте логи и индексацию. Признак исправной схемы — полезные элементы доступны, а технический шум сокращается; заданного числа URL в индексе не требуется.