Skip to content

Всё для WordPress, веб-разработки — и не только

🚫 Как закрыть страницы пагинации от индекса в Yoast SEO

🚫 Как закрыть страницы пагинации от индекса в 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:

1add_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 только на страницах архивов: категорий, тегов, архивах дат, архивах авторов и кастомных таксономий.

1add_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-параметр WordPress paged. Если пагинация реализована через кастомный параметр (например, ?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-страницы вернутся в индекс. Никаких необратимых последствий.