Страницы пагинации в WordPress часто попадают в индекс не потому, что это полезно для поиска, а потому что их никто отдельно не контролирует. В результате в выдаче появляются URL вида /page/2/, /page/3/ и дальше, а поисковик тратит обход на второстепенные страницы архивов, категорий или блога. При этом закрывать пагинацию «в лоб» через robots.txt — плохая идея: URL может остаться в индексе без возможности переобхода, а сигналы со страниц будут хуже передаваться.
Ниже — практический сценарий: когда пагинацию действительно стоит закрывать, как это сделать через noindex и каноникал, где не ошибиться и как проверить, что решение сработало.
Когда пагинацию имеет смысл закрывать
Не каждая пагинация — проблема. Если у вас большой каталог материалов, а страницы глубокой пагинации реально помогают пользователю находить контент, закрывать их без анализа не стоит. Но если это служебные страницы архивов, на которых почти нет уникальной ценности, а в индекс они попали массово, тогда ограничение индексации оправдано.
Типичные признаки, что пагинация мешает
- в поиске видны URL
/page/2/,/page/3/вместо основных страниц разделов; - в отчётах Search Console растёт число «Просканировано, но не проиндексировано» для архивов;
- глубокие страницы пагинации получают мало или совсем не получают органического трафика;
- на страницах пагинации дублируются заголовки, описания и блоки контента;
- поисковик тратит обход на страницы, которые не несут самостоятельной ценности.
Если у вас новостной или контентный сайт с сильной внутренней перелинковкой, иногда лучше не закрывать пагинацию полностью, а только убрать её из индекса и оставить доступной для обхода. Это безопаснее, чем запрещать сканирование через robots.txt.
Что делать: сравнение подходов
| Подход | Что делает | Плюсы | Минусы |
|---|---|---|---|
| robots.txt | Запрещает сканирование URL | Просто настроить | Не решает проблему уже проиндексированных страниц, может мешать переобходу |
| noindex, follow | Убирает страницу из индекса, оставляя обход ссылок | Подходит для пагинации архивов | Нужно корректно внедрить в шаблон |
| Каноникал на первую страницу | Подсказывает основную версию | Помогает объединять сигналы | Не всегда достаточно без noindex |
Для большинства архивов WordPress рабочая схема такая: noindex, follow на страницах пагинации плюс канонический URL на основную страницу архива. Это не магия, а нормальный технический сигнал для поисковика.
Диагностика: где именно у вас индексируется пагинация
Сначала проверьте, какие страницы реально попали в индекс. Не ориентируйтесь только на ощущение «их много». Откройте Search Console и посмотрите отчёт по страницам, а затем вручную проверьте несколько URL.
- поиск по сайту:
site:example.com/page/2; - проверка исходного кода страницы архива;
- наличие тега
meta robots; - значение
rel=canonical; - нет ли конфликтов с SEO-плагином.
Если у вас уже стоит SEO-плагин, сначала проверьте его настройки. Часто проблема не в WordPress, а в том, что шаблон темы и плагин отдают разные сигналы. Например, один ставит noindex, а другой перезаписывает canonical.
Пошаговое решение через код
Ниже вариант для темы или небольшого mu-plugin. Он добавляет noindex,follow на страницы пагинации архивов и оставляет обычные страницы без изменений.
<?php
add_filter('wp_robots', function(array $robots) {
if (is_paged() && (is_home() || is_archive() || is_search())) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот способ опирается на встроенный фильтр wp_robots, который есть в современных версиях WordPress. Он безопаснее, чем вручную печатать мета-тег в header.php, потому что не ломает совместимость с другими компонентами, которые тоже добавляют robots-правила.
Если нужно дополнительно указать canonical для страниц пагинации архивов, можно явно вернуть первую страницу архива. Это полезно, когда тема или SEO-плагин не делает это стабильно.
<?php
add_filter('get_canonical_url', function($canonical, $post) {
if (is_paged() && (is_home() || is_archive())) {
return get_pagenum_link(1);
}
return $canonical;
}, 10, 2);Здесь есть важная оговорка: не применяйте такой canonical ко всем типам страниц подряд. Для одиночных записей, страниц и таксономий без пагинации логика должна оставаться штатной. Иначе вы начнёте склеивать разные URL в одну точку и получите побочные эффекты в индексации.
Если используете SEO-плагин
Когда на сайте уже работает Yoast SEO, Rank Math или похожий плагин, сначала проверьте настройки архивов и шаблоны robots. В ряде случаев достаточно отключить индексацию пагинации в настройках плагина, а код оставить только как страховку для нестандартных архивов.
Если вы ведёте сайт на чистой теме и не хотите тащить лишнюю логику в шаблон, можно использовать и плагин для технической чистки, например Clearfy Pro, если он уже есть в стеке. Но даже в этом случае важно понимать, какой именно сигнал он отдаёт: noindex, canonical или запрет сканирования. Для пагинации обычно нужен именно noindex, follow, а не блокировка в robots.txt.
Проверка результата после внедрения
После правки не ограничивайтесь открытием страницы в браузере. Проверьте HTML и ответ сервера. Это быстрее, чем потом разбираться, почему поисковик продолжает индексировать старые URL.
- Откройте страницу архива с пагинацией, например
/category/news/page/2/. - Посмотрите исходный код и найдите
meta name="robots". - Убедитесь, что там есть
noindexиfollow. - Проверьте canonical: он должен вести на основную страницу архива, если это предусмотрено вашей схемой.
- В Search Console отправьте URL на повторную проверку.
Если у вас есть доступ к командной строке, можно быстро проверить заголовки и HTML через curl:
curl -I https://example.com/category/news/page/2/
curl -s https://example.com/category/news/page/2/ | grep -i robotsДля страниц пагинации важно не только наличие тега, но и отсутствие конфликтующих директив. Например, если в коде одновременно присутствуют noindex и запрет в robots.txt, поисковик может дольше переобходить старые URL и медленнее обновлять состояние.
Частые ошибки и как их исправить
Закрывают пагинацию через robots.txt
Это самая частая ошибка. Запрет сканирования не равен удалению из индекса. Если URL уже известен поисковику, он может остаться в выдаче как «URL без описания». Для пагинации лучше использовать noindex, а не блокировку.
Ставят noindex на все архивы подряд
Иногда разработчик копирует условие без проверки is_paged() и закрывает весь архив категории, включая первую страницу. Это уже ломает индексацию полезных разделов. Проверяйте условие именно на пагинацию.
Конфликтуют тема и SEO-плагин
Один компонент добавляет canonical на первую страницу, другой — на текущую, третий — вообще убирает robots-тег. В итоге поисковик получает противоречивые сигналы. Решение простое: оставьте один источник правды. Либо плагин, либо код в теме, но не оба сразу без необходимости.
Путают пагинацию архива и постраничность записи
Страницы с <!--nextpage--> — это не то же самое, что архивная пагинация. Если закрыть их одинаково, можно испортить индексацию длинных материалов. Для таких случаев нужна отдельная логика.
Практические советы по безопасности и производительности
Если вы вносите правки в тему, не редактируйте родительскую тему напрямую. Используйте дочернюю тему или mu-plugin. Так вы не потеряете изменения после обновления.
- перед правкой сделайте бэкап файлов и базы;
- проверяйте изменения на staging-окружении;
- не добавляйте лишние запросы к базе ради robots-логики;
- не отключайте сканирование массово без анализа логов;
- после внедрения проверьте sitemap: в него не должны попадать закрытые служебные URL.
Если сайт большой, полезно периодически смотреть серверные логи: какие пагинированные URL реально обходятся ботом и не создают ли они лишнюю нагрузку. Иногда проблема не в индексации как таковой, а в бесконечном обходе старых архивов из-за плохой внутренней перелинковки.
В рабочем проекте я бы начал не с «закрыть всё», а с точечного анализа: какие архивы дают трафик, какие страницы пагинации бесполезны, и какие сигналы уже отдает текущая тема. После этого решение обычно становится очевидным: часть архивов оставить открытыми, часть — перевести на noindex, follow, а конфликтующие правила убрать из шаблона.