
🚫 Как закрыть страницы пагинации от индекса в Yoast SEO
Когда у вас сотни постов, десятки категорий и облако тегов, страницы пагинации множатся незаметно. /page/2/, потом /page/3/, потом /page/15/, и вот уже Google индексирует тысячу мусорных URL, которые не несут уникального контента, но съедают краулинговый бюджет.
В старых версиях Yoast SEO был встроенный тумблер «Noindex subpages of archives». Галочка, и проблема решена. Но в 2020 году команда Yoast убрала эту настройку из интерфейса. Официальная позиция: Google стал умнее работать с пагинированными сериями и настройка больше не нужна.
На практике, нужна. Особенно крупным сайтам, где каждая лишняя страница в индексе отъедает квоту обхода у тех URL, которые действительно должны ранжироваться.
Разработчики Yoast оставили лазейку: фильтр wpseo_robots. С его помощью можно программно выставить noindex, follow для любых страниц пагинации. Ниже, два варианта кода: жёсткий (все /page/-URL) и избирательный (только архивы категорий и тегов).
💡 Быстрый обзор:
- Узнаете, почему Yoast убрал встроенную опцию и в каких случаях она всё ещё нужна
- Получите готовый код для
functions.php: два варианта фильтраwpseo_robots - Научитесь проверять результат через исходный код страницы и Google Search Console
Почему страницы пагинации стоит закрыть от индекса
У каждой страницы пагинации три проблемы. Первая, дублирование контента: /category/seo/, /category/seo/page/2/ и /category/seo/page/3/ показывают одни и те же анонсы, просто разбитые постранично. Вторая, тонкий контент: на странице пагинации нет полноценной статьи, только список заголовков с excerpt-ами. Третья, краулинговый бюджет: Googlebot тратит лимит обходов на URL, которые не имеют поисковой ценности, вместо того чтобы переобойти свежие посты.
Yoast SEO исторически умел решать эту задачу одной галочкой в настройках. Но с версии 14.0 компания пересмотрела подход. Логика была такой: Google научился распознавать rel="prev" и rel="next", понимает структуру пагинации и сам направляет пользователей на первую страницу. А noindex на подстраницах, по мнению Yoast, сокращает количество обходов и мешает поисковику переоткрывать старые статьи через ссылки с этих страниц.
Аргумент спорный. Если у вас небольшой блог на 30 постов, ок, Google разберётся. Но если сайт разросся до нескольких тысяч URL с пагинацией категорий, тегов и архивов дат, поисковик тратит время не на то. Закрыть подстраницы от индекса через код, контролируемое и обратимое решение.
Вариант 1: noindex для всех страниц пагинации
Самый простой и радикальный подход. Фильтр проверяет условие is_paged(), стандартную функцию WordPress, которая возвращает true на любой странице пагинации (архивы, категории, теги, главная). Если условие истинно, подставляем noindex, follow.
Добавьте этот код в functions.php активной темы или через плагин Code Snippets:
1 add_filter('wpseo_robots', function($robots) { 2 if (is_paged()) { 3 return 'noindex,follow'; 4 } 5 return $robots; 6 });
Что происходит построчно:
add_filter('wpseo_robots', ...), цепляемся к фильтру Yoast SEO, который отвечает за содержимое мета-тегаrobots. Фильтр принимает текущее значение$robotsи ожидает строку обратно.is_paged(), встроенная функция WordPress из ядра. Срабатывает на любом URL, где присутствует переменнаяpaged(то есть/page/N/).return 'noindex,follow', говорим поисковику: «не индексируй эту страницу, но переходи по ссылкам с неё». Ссылки внутри пагинации продолжают передавать вес.return $robots, для всех остальных страниц возвращаем стандартное значение Yoast без изменений.
После добавления кода зайдите на любую страницу вроде /category/seo/page/2/ и откройте исходный HTML (Ctrl+U). Найдите строку <meta name="robots". Если видите content="noindex, follow", фильтр отработал.
Вариант 2: noindex только для архивов категорий и тегов
Первый вариант бьёт по всем paginated-страницам без разбора, включая главную (/page/2/). Если главная страница сайта выводит анонсы постов и вы хотите сохранить её подстраницы в индексе, нужна более прицельная логика.
Добавляем второе условие, is_archive(). Эта функция WordPress возвращает true только на страницах архивов: категорий, тегов, архивах дат, архивах авторов и кастомных таксономий.
1 add_filter('wpseo_robots', function($robots) { 2 if (is_paged() && is_archive()) { 3 return 'noindex,follow'; 4 } 5 return $robots; 6 });
Разница с первым вариантом, в сочетании условий. is_paged() && is_archive() означает: «страница пагинации И страница архива одновременно». Пагинация главной (/page/2/) под условие is_archive() не попадает, поэтому её индексация сохраняется.
Какой вариант выбрать:
Ситуация | Вариант |
|---|---|
Крупный сайт, тысячи URL пагинации, нужен максимальный контроль | Вариант 1 |
Главная выводит ленту постов, подстраницы главной важны для индекса | Вариант 2 |
Интернет-магазин на WooCommerce с категориями товаров | Вариант 2 |
Нужна предсказуемость и минимум исключений | Вариант 1 |
Как проверить результат
После вставки кода проверьте три вещи.
Первое, исходный код. Откройте любую страницу пагинации, Ctrl+U, поиск по <meta name="robots". Убедитесь, что видите content="noindex, follow", а не content="index, follow".
Второе, Google Search Console. Зайдите в инструмент проверки URL, вставьте адрес paginated-страницы и нажмите «Проверить». В блоке «Индексирование» увидите статус: «Страница не проиндексирована» с причиной «Исключено тегом noindex». Это подтверждает, что Googlebot получил и обработал директиву.
Третье, динамика индекса. В Search Console откройте «Индекс» → «Страницы». Через 2-4 недели после внедрения кода вы увидите рост числа страниц в статусе «Исключено тегом noindex» и сокращение проиндексированных paginated-URL. Процесс не мгновенный: Googlebot должен переобойти каждый URL, чтобы считать новый тег.
Важные ограничения и предосторожности
Код меняет поведение всего сайта. Перед внедрением убедитесь, что понимаете последствия.
Резкое выпадение тысяч страниц из индекса может временно просесть по трафику. Если сайт жил с индексацией пагинации несколько лет и часть подстраниц получала поисковые переходы, вы эти переходы потеряете. Взамен освободится краулинговый бюджет для страниц, которые действительно должны ранжироваться. Но период адаптации в 3-6 недель неизбежен.
Делайте бэкап functions.php перед правками. Синтаксическая ошибка в PHP-коде положит весь сайт (white screen of death). Если используете Code Snippets, плагин сам отловит фатальную ошибку и деактивирует сниппет. Если правите functions.php напрямую, держите под рукой FTP-доступ, чтобы откатить файл.
Если на сайте установлен кеширующий плагин (WP Rocket, W3 Total Cache), сбросьте кеш после добавления кода. Иначе старые HTML-копии страниц без нового мета-тега robots будут отдаваться посетителям и поисковикам несколько часов или дней.
Более детальный разбор всех возможностей Yoast SEO, от установки до тонкой настройки мета-тегов, смотрите в нашем руководстве по настройке Yoast SEO для WordPress.
⁉️🤔 Частые вопросы
Почему Yoast SEO убрал встроенную опцию noindex для подстраниц?
Google научился распознавать пагинированные серии через теги
rel="prev"иrel="next"и направлять пользователей на первую страницу. Yoast посчитал, что принудительный noindex на подстраницах сокращает обходы и мешает переиндексации старых статей через ссылки с paginated-страниц. Официальная справка Yoast подтверждает: настройку удалили из интерфейса, но фильтрwpseo_robotsостался для программного управления.
Фильтр wpseo_robots всё ещё поддерживается в 2026 году?
Да. Фильтр
wpseo_robotsработает в актуальных версиях Yoast SEO (24.x, 2026 год) и документирован в Metadata API на developer.yoast.com. Важное изменение: до версии 19.8 фильтр позволял вернутьfalseдля удаления мета-тега robots. Начиная с 19.8, возвратfalseигнорируется, фильтр ожидает только строку ('noindex,follow'или$robots). Оба варианта кода из статьи возвращают строку и полностью совместимы.
Сработает ли код, если у сайта кастомная структура пагинации?
Функция
is_paged()опирается на стандартный query-параметр WordPresspaged. Если пагинация реализована через кастомный параметр (например,?pg=2или виртуальный скроллинг), условие не сработает. Для кастомной пагинации заменитеis_paged()на проверку конкретного query_var:get_query_var('custom_page_var'). Плагины вроде WP-PageNavi работают через стандартныйpaged, конфликта нет.
Через сколько Google уберёт paginated-страницы из индекса?
В среднем от 2 до 6 недель. Скорость зависит от размера сайта и частоты обходов: на сайте с ежедневными обходами Googlebot переобойдёт основные разделы за 7-10 дней, на небольшом блоге с еженедельными обходами, за месяц. Ускорить можно через ручной запрос переобхода в Search Console (раздел «Индекс» → «Страницы» → выбор URL → «Запросить индексирование»), но Google обрабатывает такие запросы в порядке очереди.
Можно ли закрыть пагинацию через robots.txt вместо noindex?
Технически да:
Disallow: */page/*в robots.txt запретит обход paginated-URL. Но это хуже, чем noindex. Причина: robots.txt блокирует обход страницы, а не её индексацию. Если на paginated-страницу ведут внешние ссылки, Google может проиндексировать её как «страницу без описания». При этом ссылки с самой страницы тоже не будут обойдены, вы потеряете передачу веса на посты.noindex, followрешает обе задачи: страница не индексируется, но ссылки с неё обходятся.
Стоит ли закрывать пагинацию от индекса в вашем случае
Ответ сводится к двум факторам: размер сайта и наличие краулингового бюджета как дефицитного ресурса.
Если у вас 50 постов и три категории, не заморачивайтесь. Google разберётся, какие страницы показывать в выдаче, а лишние сам отсеет как малоценные. Фильтр wpseo_robots в этом сценарии, избыточное усложнение.
Если у вас 500+ постов, десятки категорий, активный блог с тегами и архивом дат, пагинация создаёт сотни и тысячи URL, которые поисковик обходит вместо свежих статей. Включайте вариант 2 (архивы) или вариант 1 (всё), проверяйте результат через исходный код и Search Console, и дайте Google 3-4 недели на переобход.
Код обратим: закомментировали фильтр, через месяц все paginated-страницы вернутся в индекс. Никаких необратимых последствий.



