wpcompany.ru wordpress WPCompany

Как запретить индексацию отдельных страниц WordPress через noindex и robots meta

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

Ниже разберём, как понять, что именно нужно закрывать, как реализовать это в коде или через SEO-плагин, и как проверить, что поисковики получили правильную директиву.

Когда нужен noindex, а когда достаточно robots.txt

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

Типичные сценарии

  • страницы внутреннего поиска WordPress с параметром ?s=;
  • архивы автора на сайте, где один автор и дублирующийся контент;
  • страницы пагинации, если они создают мусорный индекс и не несут ценности;
  • служебные шаблоны, которые доступны по прямому URL;
  • страницы с фильтрами и параметрами, которые плодят дубли.

Диагностика: что именно попало в индекс

Перед изменениями стоит понять, что уже индексируется и почему. Иначе легко закрыть не ту страницу и потерять трафик. Проверьте:

  • есть ли URL в поиске по точному адресу;
  • какой у страницы текущий <meta name="robots">;
  • не отдаёт ли шаблон заголовок X-Robots-Tag;
  • не создаёт ли SEO-плагин свои правила поверх вашего кода;
  • не дублируется ли страница через архив, категорию или параметр.

Удобный минимум для проверки — открыть исходный код страницы и найти robots-мета. Если там уже есть index, follow, а вы ожидаете запрет, значит правило не применилось или его перезаписал плагин.

Пошаговое решение через хук wp_robots

Начиная с WordPress 5.7, для управления robots-мета есть фильтр wp_robots. Это нормальный способ добавить noindex без правки шаблонов темы. Подходит, если нужно закрыть конкретные типы страниц.

<?php
add_filter( 'wp_robots', function( array $robots ) {
    // Закрываем внутренний поиск WordPress.
    if ( is_search() ) {
        $robots['noindex']  = true;
        $robots['nofollow'] = false;
    }

    // Закрываем архивы автора на сайтах, где один автор.
    if ( is_author() && ! is_admin() ) {
        $robots['noindex'] = true;
    }

    return $robots;
} );

Если нужно закрыть не только поиск и авторов, а, например, отдельную страницу по ID, можно добавить проверку по is_page() и ID шаблона:

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_page( array( 42, 84 ) ) ) {
        $robots['noindex'] = true;
    }

    return $robots;
} );

Такой вариант лучше, чем вставлять мета-тег вручную в header.php: он не ломается при обновлении темы и работает предсказуемо.

Если нужна жёсткая защита: X-Robots-Tag в заголовке

Для файлов, PDF, выгрузок или страниц, где вы не хотите полагаться на HTML-шаблон, можно отправить HTTP-заголовок X-Robots-Tag. Это особенно полезно, если контент отдаётся не обычной темой, а через отдельный обработчик.

<?php
add_action( 'template_redirect', function() {
    if ( is_search() || is_author() ) {
        header( 'X-Robots-Tag: noindex, follow', true );
    }
} );

Здесь важно не дублировать конфликтующие правила. Если SEO-плагин уже выводит noindex в мета-теге, а вы ещё и отправляете заголовок, это не ошибка, но усложняет диагностику. Для обычных страниц достаточно одного механизма.

Сравнение подходов

ПодходГде применятьПлюсыМинусы
SEO-плагинЕсли уже используется Yoast SEO, Rank Math или аналогУдобно для редакторов, меньше кодаЛегко забыть, где именно включено правило
Хук wp_robotsТочечные правила для страниц и архивовНативно для WordPress, не зависит от шаблонаНужен код и контроль условий
X-Robots-TagФайлы, нестандартные ответы, отдельные обработчикиРаботает на уровне HTTPСложнее отлаживать, если несколько слоёв логики

Как закрыть индексацию через SEO-плагин без кода

Если на сайте уже стоит SEO-плагин, проще использовать его настройки для конкретной страницы или типа записей. Это нормальный путь, если редактор должен управлять индексацией без разработчика. Но важно понимать: плагин должен быть один, а не несколько одновременно.

Проверьте в настройках страницы или архива наличие опции вроде noindex, не индексировать или discourage search engines. После сохранения снова откройте исходный код и убедитесь, что тег реально появился. Не ориентируйтесь только на интерфейс плагина.

Проверка результата после внедрения

После изменения правил проверьте не только HTML, но и ответ сервера. Делайте это в таком порядке:

  1. Откройте страницу в браузере и посмотрите исходный код.
  2. Убедитесь, что в <head> есть noindex.
  3. Если используете X-Robots-Tag, проверьте заголовки ответа через DevTools или curl -I.
  4. Проверьте, не осталось ли старое правило в кэше страницы.
  5. Если страница уже была в индексе, отправьте её на повторную проверку в Search Console.

Пример проверки заголовков через терминал:

curl -I https://example.com/?s=test

В ответе ищите строку вида:

X-Robots-Tag: noindex, follow

Если её нет, значит условие в коде не сработало или запрос проходит через кэш, который отдаёт старую версию.

Частые ошибки и как их исправить

Закрыли URL в robots.txt, но он остался в индексе

Это ожидаемое поведение. robots.txt не удаляет страницу из выдачи сам по себе. Добавьте noindex и дождитесь переобхода.

Поставили noindex, но страница всё равно индексируется

Чаще всего причина в кэше, конфликте с SEO-плагином или в том, что правило применили не к тому типу страницы. Проверьте, какой шаблон реально отрабатывает: архив, страница, запись, поиск.

Случайно закрыли важные страницы

Так бывает, если условие слишком широкое, например is_page() без списка ID. Всегда ограничивайте правило конкретными страницами или типами записей.

Использовали несколько SEO-плагинов одновременно

Они могут выводить разные robots-мета и перетирать друг друга. На практике это приводит к хаосу в исходном коде. Оставьте один основной плагин и проверьте, не дублируется ли логика в теме.

Практические советы по безопасности и производительности

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

Для производительности полезно не плодить лишние архивы и параметры. Если фильтр или поиск создают множество дублей, лучше сначала убрать источник проблемы: отключить ненужные архивы, сократить число публичных таксономий, нормализовать ссылки. В ряде проектов помогает и чистка технического мусора через инструменты вроде Clearfy Pro, но только как дополнение к нормальной логике шаблонов, а не вместо неё.

Короткий чек-лист перед публикацией

  • Понять, какой тип страницы нужно закрыть.
  • Выбрать один способ: SEO-плагин, wp_robots или X-Robots-Tag.
  • Проверить, не конфликтует ли правило с кэшем.
  • Убедиться, что важные страницы не попали под слишком широкое условие.
  • Проверить исходный код и заголовки ответа.
  • Отправить URL на переобход в Search Console, если страница уже была в индексе.

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше