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

На WordPress часто нужно закрыть от индексации не весь сайт, а конкретные страницы: результаты поиска, архивы с дублями, служебные шаблоны, страницы пагинации, тестовые материалы, внутренние разделы. Ошибка здесь типовая: в robots.txt закрывают URL, но страница уже попала в индекс; или наоборот ставят noindex, но забывают про каноникал и внутренние ссылки. В итоге поисковик продолжает видеть мусорные URL, а сайт теряет качество индекса.

Когда это действительно нужно

Сценарий не про «спрятать всё подряд», а про точечную техническую чистку. Обычно закрывают:

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

Важно различать два инструмента: robots.txt управляет обходом, а meta robots или HTTP-заголовок управляют индексацией. Если URL уже известен поисковику, одного Disallow обычно недостаточно.

Диагностика проблемы: что именно индексируется

Перед правками проверьте, какие URL уже попали в индекс и почему. Откройте в поиске запросы вида site:example.com и посмотрите, нет ли там:

  • страниц с параметрами ?s=, ?orderby=, ?filter=;
  • архивов, которые дублируют рубрики;
  • страниц вложений с пустым или слабым контентом;
  • технических URL из темы или плагинов.

Если у вас есть доступ к Search Console, проверьте отчёт по индексированию и конкретный URL. Для закрытия от индексации важно понять, что поисковик видит сейчас: статус noindex, канонический URL, блокировку robots или просто дубли.

Что проверить в исходном коде страницы

Откройте HTML страницы и найдите:

  • <meta name="robots" content="noindex, nofollow"> или похожую комбинацию;
  • <link rel="canonical" href="...">;
  • нет ли HTTP-заголовка X-Robots-Tag;
  • не закрыт ли URL только через robots.txt.

Если страница уже в индексе, а вы только что добавили Disallow, поисковик может не увидеть новый noindex, потому что перестанет обходить страницу. Это частая причина, почему URL «не уходит» неделями.

Рабочая схема: robots.txt + noindex + canonical

Для разных типов страниц нужны разные действия. Универсального «закрыть всё в robots» нет. Ниже — нормальная практическая схема.

ПодходКогда использоватьПлюсМинус
robots.txtЧтобы не тратить crawl budget на служебные URLПросто и быстроНе убирает уже проиндексированные страницы
meta robots noindexЧтобы исключить страницу из индексаРаботает для уже известных URLСтраница должна быть доступна для обхода
canonicalКогда есть дубль и нужен основной URLПомогает склеить сигналыНе заменяет noindex в проблемных случаях

1. Закрываем служебные URL в robots.txt

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

User-agent: *
Disallow: /?s=
Disallow: /search/
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /tag/
Disallow: /author/
Disallow: /feed/

Но не копируйте этот пример без проверки. Например, закрывать /tag/ имеет смысл не всегда: если теги дают трафик и содержат полезные подборки, их лучше оставить открытыми и доработать контент.

2. Ставим noindex на конкретные типы страниц через код

Если нужно закрыть только часть архивов или отдельные шаблоны, проще и надёжнее добавить noindex программно. В WordPress это можно сделать через фильтр wp_robots, который поддерживается ядром.

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_search() || is_author() || is_tag() ) {
        $robots['noindex']  = true;
        $robots['nofollow']  = true;
    }

    return $robots;
} );

Этот вариант удобен, если вы хотите закрыть поиск, архивы автора и теги, но не трогать обычные записи и страницы. Для более точечной настройки можно сузить условие, например, закрывать только теги с малым количеством записей или только архивы определённого автора.

3. Для отдельных страниц используем шаблон или метаполе

Если закрывать нужно не тип архива, а конкретную страницу, лучше дать редактору явный флаг. Например, через custom field noindex_page и проверку в wp_head.

<?php
add_action( 'wp_head', function() {
    if ( is_page() ) {
        $noindex = get_post_meta( get_queried_object_id(), 'noindex_page', true );
        if ( $noindex ) {
            echo '<meta name="robots" content="noindex, nofollow" />' . "\n";
        }
    }
} );

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

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

После правок не ограничивайтесь просмотром страницы в браузере. Проверьте несколько уровней:

  1. Откройте исходный код и убедитесь, что на нужной странице есть noindex.
  2. Проверьте, не блокирует ли robots.txt обход раньше, чем поисковик увидит noindex.
  3. Посмотрите заголовки ответа сервера, если используете X-Robots-Tag.
  4. В Search Console отправьте URL на повторную проверку, если страница уже была в индексе.

Для быстрой проверки заголовков можно использовать curl:

curl -I https://example.com/your-page/

В ответе ищите X-Robots-Tag, если вы его настраивали на уровне сервера или плагина. Если заголовка нет, а в HTML есть meta robots, это тоже нормально — просто убедитесь, что он выводится именно на нужных URL.

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

Закрыли URL в robots.txt и ждёте удаления из индекса

Это самая частая ошибка. Disallow не удаляет страницу из индекса сам по себе. Если URL уже известен, сначала дайте поисковику увидеть noindex, а потом при необходимости ограничивайте обход.

Ставят noindex, но оставляют внутренние ссылки на мусорный URL

Если страница всё ещё активно перелинкована из меню, хлебных крошек или блоков «похожие записи», поисковик будет продолжать её находить. Уберите такие ссылки или замените их на канонический адрес.

Дублируют robots meta в теме и SEO-плагине

Когда одновременно работает тема, кастомный код и SEO-плагин, легко получить два тега meta robots с разными значениями. В таком случае поисковик может интерпретировать страницу непредсказуемо. Оставьте один источник управления.

Ставят nofollow вместо решения проблемы

nofollow не решает задачу индексации дублей. Если страница не должна попадать в индекс, нужен именно noindex и нормальная логика каноникализации.

Чек-лист перед публикацией изменений

  • Проверил, какие URL уже в индексе.
  • Определил тип страницы: архив, поиск, отдельная запись, служебный шаблон.
  • Убедился, что noindex выводится только там, где нужно.
  • Не заблокировал обход раньше, чем поисковик увидит noindex, если URL уже индексировался.
  • Проверил канонический URL и внутренние ссылки.
  • Тестировал результат в исходном коде и в Search Console.

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

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

Если нужен более широкий контроль над дублями, архивами и технической чисткой, удобно смотреть в сторону инструментов, которые умеют управлять SEO-мета, скрывать лишние элементы и наводить порядок в шаблонах. Например, у Clearfy Pro есть набор функций для технической оптимизации и удаления дублей: https://wpshop.ru/plugins/clearfy.

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

⭐⭐⭐⭐⭐