Дубли на страницах пагинации чаще всего появляются не из-за самой пагинации, а из-за того, как WordPress и тема формируют архивы, title, canonical и мета-robots. В итоге в индекс попадают страницы вида /category/page/2/, /tag/page/3/ и похожие URL, которые не несут самостоятельной ценности. Если не контролировать это поведение, поисковик начинает тратить обход на второстепенные страницы, а в отчётах по индексации появляются лишние URL.
Ниже разберём, как понять, что проблема именно в пагинированных архивах, какие настройки можно закрыть без кода, а где лучше поправить шаблон или подключить фильтры WordPress.
Как понять, что дубли идут именно из пагинации
Сначала проверьте не абстрактную «проблему с дублями», а конкретные URL. Обычно сигналами служат:
- в поиске есть страницы
/page/2/,/page/3/и выше, хотя они не должны ранжироваться отдельно; - в sitemap попадают архивные страницы, которые вы не планировали индексировать;
- одинаковые title и description повторяются на нескольких страницах архива;
- canonical на второй и последующих страницах указывает на первую страницу архива, хотя контент реально отличается;
- в Google Search Console растёт число «Просканировано, но не проиндексировано» для архивов.
Что проверить в первую очередь
Откройте несколько архивов вручную и сравните HTML. Важно посмотреть не только видимый контент, но и исходный код страницы. Ищите:
<link rel="canonical" ...>;<meta name="robots" ...>;- одинаковый заголовок на всех страницах пагинации;
- наличие ссылок на страницы пагинации в sitemap.
Если canonical указывает на первую страницу, а страницы 2, 3, 4 содержат уникальные записи архива, это не всегда ошибка. Но если цель — не индексировать пагинацию, поведение нужно сделать явным и последовательным.
Диагностика проблемы в WordPress
В WordPress пагинация архивов строится штатно через paginate_links() и шаблоны архива. Проблема обычно появляется в одном из трёх мест:
- SEO-плагин ставит canonical на первую страницу, но не добавляет
noindexдля страниц пагинации. - Тема выводит одинаковые мета-теги на всех страницах архива.
- В sitemap попадают URL, которые вы не хотите индексировать.
Если у вас включены архивы рубрик, тегов, авторов и дат, сначала определите, какие именно типы архивов должны быть доступны поиску. Не нужно закрывать всё подряд: иногда пагинация рубрик полезна, а пагинация тегов — нет.
Пошаговое решение без лишней магии
1. Определите, что именно нужно закрыть
Самый безопасный подход — не отключать пагинацию целиком, а управлять индексированием конкретных архивов. Например:
- оставить индексируемыми первые страницы рубрик;
- закрыть от индексации страницы
/page/2/и дальше; - убрать из sitemap архивы, которые не должны участвовать в поиске;
- сохранить нормальную навигацию для пользователей.
2. Добавьте noindex,follow для страниц пагинации архивов
Если SEO-плагин не даёт точечной настройки, можно добавить фильтр в functions.php дочерней темы или в небольшой mu-plugin. Пример ниже работает для архивных страниц пагинации и не трогает обычные записи и страницы:
<?php
add_filter('wp_robots', function ($robots) {
if (is_paged() && (is_category() || is_tag() || is_tax() || is_author() || is_date())) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант меняет только robots-мета для пагинированных архивов. Он не удаляет страницы, не ломает ссылки и не мешает пользователю листать архив.
3. Проверьте canonical
Если canonical на страницах пагинации указывает на первую страницу, это может быть нормальным решением для некоторых сайтов. Но если вы хотите, чтобы поисковик понимал структуру архива, canonical должен быть самоссылочным на каждой странице. В WordPress это обычно делает SEO-плагин или тема. Если у вас кастомная реализация, проверьте, не подменяется ли canonical вручную.
Пример безопасной проверки в шаблоне:
<?php
if (is_paged()) {
echo '<!-- paginated archive page -->';
}Это не решение само по себе, а маркер для отладки: так проще увидеть, что шаблон действительно различает первую и последующие страницы.
4. Исключите лишние архивы из sitemap
Если sitemap генерирует SEO-плагин, настройка обычно делается в интерфейсе плагина. Если sitemap собирается вручную или через кастомный код, не добавляйте туда архивы, которые вы закрываете от индексации. Иначе поисковик будет продолжать их обходить, даже если на страницах стоит noindex.
Для сайтов с большим количеством таксономий полезно оставить в sitemap только те архивы, которые реально приводят трафик и имеют уникальную структуру.
Сравнение подходов: плагин, код или гибрид
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройки SEO-плагина | Если нужно быстро закрыть пагинацию без разработки | Не всегда есть точечный контроль для разных архивов |
Код через wp_robots | Если нужна точная логика по типам архивов | Нужно следить за темой и обновлениями |
| Гибрид | Если часть архивов индексируется, а часть нет | Требует аккуратной проверки canonical и sitemap |
На практике гибрид чаще всего надёжнее: SEO-плагин отвечает за базовую разметку, а код — за исключения, которые нельзя удобно выразить в интерфейсе.
Проверка результата после внедрения
После изменений не ограничивайтесь просмотром исходника одной страницы. Проверьте несколько уровней:
- откройте первую, вторую и третью страницы архива;
- убедитесь, что на пагинированных страницах есть
noindex,followили другой выбранный вами вариант; - проверьте canonical на каждой странице;
- посмотрите, исчезли ли лишние URL из sitemap;
- в Search Console отправьте на повторную проверку только те URL, которые реально меняли.
Если вы используете командную строку на сервере, можно быстро проверить заголовки и HTML через curl:
curl -I https://example.com/category/news/page/2/
curl -s https://example.com/category/news/page/2/ | grep -iE 'robots|canonical'Это помогает увидеть, что фактически отдаёт сервер, а не только что показывает браузер после кэширования.
Частые ошибки и как их исправить
Закрыли от индексации весь архив, а не только пагинацию
Такое случается, когда условие написано слишком широко. Например, вместо is_paged() используют только is_category(). В результате первая страница рубрики тоже получает noindex. Исправление простое: уточните условие и проверьте, что оно срабатывает только на страницах 2+.
Canonical и robots противоречат друг другу
Если canonical ведёт на первую страницу, а robots ставит noindex, поисковик получает смешанный сигнал. Это не всегда критично, но лучше выбрать одну логику и придерживаться её во всех архивных шаблонах.
Сайт закрыт от индексации, но URL всё равно появляются в отчётах
Причина может быть в внутренних ссылках, sitemap или внешних ссылках. noindex не удаляет URL мгновенно. Нужно дождаться повторного обхода и убедиться, что страницы больше не попадают в новые карты сайта.
Проблема решена в плагине, но тема переопределяет мета-теги
Некоторые темы выводят собственный canonical или robots. Тогда настройки SEO-плагина не срабатывают так, как ожидается. Проверьте шаблон header.php, подключённые action hooks и наличие дублирующего вывода мета-тегов.
Практические советы по безопасности и производительности
Если вы вносите правки кодом, не редактируйте родительскую тему напрямую. Используйте дочернюю тему или mu-plugin, чтобы обновление не затёрло изменения. Перед правкой сделайте резервную копию и проверьте изменения на staging-версии.
С точки зрения производительности не стоит городить тяжёлую логику на каждом запросе архива. Фильтр wp_robots должен быть коротким и предсказуемым. Не делайте в нём запросы в базу, не тяните внешние API и не вычисляйте сложные условия, если можно обойтись штатными функциями WordPress.
Если задача шире и вам нужно системно чистить дубли, архивы и служебные страницы, имеет смысл посмотреть в сторону инструментов, которые закрывают SEO- и cleanup-сценарии в одном месте. Например, у Clearfy Pro есть набор функций для удаления дублей и технической чистки сайта: Clearfy Pro.
Мини-чек-лист перед публикацией изменений
- Проверил, какие архивы должны индексироваться, а какие нет.
- Убедился, что
noindexприменяется только к страницам пагинации. - Сравнил canonical на первой и последующих страницах.
- Проверил sitemap на наличие лишних архивов.
- Открыл страницы в браузере и через
curl. - Убедился, что тема не переопределяет мета-теги поверх SEO-плагина.
Если после внедрения страницы пагинации всё ещё попадают в индекс, обычно проблема не в одном теге, а в связке из canonical, sitemap и внутренних ссылок. В таких случаях проще идти от фактического HTML и ответа сервера, чем пытаться лечить это только настройкой одного плагина.