Как настроить noindex для страниц поисковой выдачи в WordPress

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

Задача здесь не в том, чтобы отключить поиск как функцию, а в том, чтобы оставить его для пользователей и убрать из индекса страницы вида ?s=запрос. Делать это лучше точечно: через noindex, а не через глобальное закрытие сайта в robots.txt.

Когда проблема уже видна в отчётах

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

  • в индексе есть URL с параметром ?s=;
  • в Search Console растёт число страниц с низкой ценностью или дубликатов;
  • по запросу site:example.com inurl:?s= находятся страницы поиска;
  • в выдаче отображаются результаты поиска вместо целевых страниц;
  • внутренний поиск генерирует много пустых или почти пустых страниц.

Что именно нужно закрывать

Обычно речь идёт о страницах результатов поиска, а не о форме поиска. Форму оставляем, а страницы результатов помечаем как noindex. Если у вас есть отдельные шаблоны поиска, фильтры или AJAX-поиск, их нужно оценивать отдельно: не каждый поисковый endpoint должен быть закрыт одинаково.

Какой способ выбрать: плагин, код или оба

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

ПодходКогда подходитПлюсМинус
SEO-плагинЕсли уже используется Yoast SEO, Rank Math или аналогМеньше кода, управление из админкиПоведение зависит от настроек плагина
Код в теме или mu-pluginНужен контроль без лишних зависимостейПрозрачно и предсказуемоНужно аккуратно поддерживать при обновлениях
robots.txtТолько как дополнительная мераПросто закрыть обходНе убирает уже известные URL из индекса

Если нужен именно результат в индексе, ориентируйтесь на noindex. Один robots.txt этого не гарантирует: поисковик может знать URL, но не увидеть содержимое, и страница всё равно останется в индексе как известный адрес.

Пошаговое решение через код

Самый практичный вариант — добавить мета-тег noindex, follow на страницы поиска. Для этого можно использовать хук wp_head. Код лучше положить в дочернюю тему или в отдельный mu-plugin, если не хотите терять настройку при смене темы.

<?php
add_action( 'wp_head', function () {
    if ( is_search() ) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
} );

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

Если нужен более точный контроль через фильтр

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

<?php
function wppay_search_robots_meta() {
    if ( ! is_search() ) {
        return '';
    }

    return '<meta name="robots" content="noindex,follow" />';
}
add_action( 'wp_head', 'wppay_search_robots_meta', 1 );

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

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

В большинстве SEO-плагинов есть настройка для архивов поиска или для страниц с параметрами. Смысл тот же: нужно добиться, чтобы на страницах поиска выводился noindex. Если плагин позволяет отдельно управлять мета-тегом robots для search results, это предпочтительнее, чем править шаблон вручную.

Проверяйте не только галочку в интерфейсе, но и итоговый HTML. Иногда настройка включена, но кэш отдаёт старую версию страницы, либо тема выводит свой собственный meta robots.

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

После правки не ограничивайтесь просмотром страницы в браузере. Нужна проверка на уровне исходного HTML и кэша.

  1. Откройте страницу поиска, например /?s=тест.
  2. Посмотрите исходный код страницы и найдите meta name="robots".
  3. Убедитесь, что там есть noindex,follow, а не index.
  4. Проверьте страницу в режиме инкогнито и после очистки кэша.
  5. Если используется CDN или серверный кэш, сбросьте его тоже.

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

Что смотреть в Search Console

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

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

  • Закрыли поиск в robots.txt вместо noindex. Это не убирает уже известные URL из индекса. Исправление: оставьте robots.txt как дополнительную меру, но добавьте noindex на сами страницы.
  • Поставили noindex на весь сайт. Такое случается после копирования кода в неправильный шаблон. Исправление: ограничьте условие только is_search().
  • Не очистили кэш. Поисковик и браузер видят старую версию страницы. Исправление: сбросьте кэш страницы, объекта и CDN.
  • Дублируется meta robots из темы и плагина. Исправление: оставьте один источник директив, второй отключите.
  • Закрыли поиск, но оставили индексируемыми параметры сортировки. Если у вас есть отдельные URL с параметрами, их нужно проверить отдельно.

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

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

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

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

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

  • Проверили, что noindex применяется только к страницам поиска.
  • Убедились, что форма поиска продолжает работать.
  • Сбросили кэш сайта и CDN.
  • Посмотрели исходный HTML страницы /?s=....
  • Проверили, нет ли второго источника meta robots.
  • Оценили, не нужны ли отдельные правила для AJAX-поиска или нестандартных шаблонов.

Если после внедрения страницы поиска всё ещё появляются в индексе, обычно проблема не в самом noindex, а в том, что поисковик видит старую версию страницы, альтернативный URL или дублирующий шаблон. В таком случае нужно идти от фактического HTML, а не от настроек в админке.

Как закрыть от индексации отдельные страницы WordPress без вреда для SEO
15.08.2026
WooCommerce: как удалить зависшие платежи и избавиться от проблем в платежной системе
28.06.2026
Как установить ограничения на платежи в WordPress по суммам и пользователям
11.03.2026
Как создать подписку на платные услуги в WordPress
16.11.2025
Как отладить проблемы с подключением платежных систем в WordPress
02.02.2026