Как закрыть от индексации страницы поисковой выдачи в WordPress

Страницы внутреннего поиска в WordPress часто попадают в индекс случайно: пользователь вводит запрос, поисковик находит URL вида ?s=, а дальше в индексе появляются пустые, дублирующие или бесполезные страницы. Для небольшого сайта это выглядит как техническая мелочь, но на практике такие URL создают лишний шум в отчётах Search Console и мешают контролировать краулинг.

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

Когда это действительно проблема

Проверять нужно не по ощущениям, а по фактам. Откройте поиск по сайту и посмотрите, как формируется URL. В типичной установке WordPress это что-то вроде https://site.ru/?s=запрос. Если такие адреса уже есть в индексе, они обычно дают мало пользы и часто имеют низкое качество сниппета.

Признаки, что страницы поиска лучше закрыть

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

Важно не путать индексацию страницы поиска и саму функцию поиска. Пользователи должны продолжать искать по сайту, а поисковым системам обычно не нужно индексировать такие страницы.

Что лучше: meta robots, заголовки или редирект

Для этой задачи есть несколько рабочих подходов. Редиректить все страницы поиска на главную — плохая идея: пользовательский сценарий ломается, а поисковик получает неочевидное поведение. Надёжнее отдавать для результатов поиска заголовок noindex, follow или HTTP-заголовок X-Robots-Tag для конкретных URL.

СпособКогда подходитМинус
Плагин SEOЕсли уже используете SEO-плагин и не хотите писать кодНе всегда удобно точечно контролировать внутренний поиск
Код в теме или мини-плагинеЕсли нужен точный контроль без лишних зависимостейНужно аккуратно тестировать после обновлений
РедиректПочти никогда для внутреннего поискаЛомает пользовательский сценарий

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

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

Ниже вариант, который добавляет noindex, follow только на страницы поиска. Его можно положить в functions.php дочерней темы или в небольшой mu-plugin.

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

Этот способ подходит, если поисковики корректно читают head страницы. Но для надёжности лучше дополнительно отдать HTTP-заголовок. Тогда даже если шаблон изменится, правило останется в ответе сервера.

<?php
add_filter('wp_headers', function ($headers) {
    if (is_search()) {
        $headers['X-Robots-Tag'] = 'noindex, follow';
    }

    return $headers;
});

Если хотите закрыть только пустые результаты поиска, а не все страницы поиска, логика будет другой. Тогда проверяйте, есть ли записи в have_posts(), и ставьте noindex только на пустые выдачи. Но в большинстве проектов проще и чище закрыть все URL поиска целиком.

Если используете SEO-плагин

В популярных SEO-плагинах обычно есть настройка для noindex архивов и служебных страниц. Ищите именно опцию для search pages, а не для обычных записей. После включения не полагайтесь на интерфейс — проверьте исходный код страницы и HTTP-ответ.

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

Как проверить, что решение сработало

Проверка должна быть в двух плоскостях: HTML и HTTP. Сначала откройте страницу поиска в браузере и посмотрите исходный код. В <head> должен появиться meta robots. Затем проверьте заголовки ответа.

curl -I "https://site.ru/?s=test"

В ответе ищите строку вроде X-Robots-Tag: noindex, follow. Если заголовка нет, значит код не сработал или условие было написано не там, где нужно.

Дополнительно проверьте:

  • страница поиска открывается для пользователя без редиректа;
  • в HTML есть noindex, follow;
  • в Search Console URL постепенно уходит из индекса после переобхода;
  • внутренний поиск продолжает работать и выдаёт результаты.

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

Код вставили в неправильное место

Если добавить условие слишком рано, до инициализации запроса, is_search() может не отработать как ожидается. Надёжнее использовать хуки, которые срабатывают уже после формирования основного запроса, например wp_head для meta-тега и wp_headers для заголовка.

Закрыли поиск редиректом на главную

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

Поставили noindex только в robots.txt

robots.txt не гарантирует удаление URL из индекса, если он уже известен поисковику. Для удаления из индекса нужен именно noindex в ответе страницы или заголовок X-Robots-Tag.

Забыли про параметрические URL

Иногда поиск формируется не только через ?s=, но и через дополнительные параметры фильтрации. Если у вас есть кастомный поиск или плагины фильтров, проверьте все варианты URL, которые реально генерируются на сайте.

Что учесть для безопасности и производительности

Если вы добавляете код вручную, не правьте родительскую тему напрямую. После обновления изменения пропадут. Лучше использовать дочернюю тему или небольшой mu-plugin. Для технических правил это самый предсказуемый вариант.

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

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

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

  • проверить, как выглядит URL поиска на сайте;
  • добавить noindex, follow в HTML или заголовок ответа;
  • убедиться, что поиск для пользователей не сломан;
  • проверить исходный код и curl -I;
  • посмотреть, нет ли конфликтов с SEO-плагином;
  • после обновления шаблона повторно проверить страницу поиска.

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

Как установить ограничения на регистрацию пользователей в WordPress
02.03.2026
Как отключить автоматическое обновление WordPress без потери безопасности
11.07.2026
Автоматическое удаление неактивных заказов WooCommerce
23.05.2026
Использование хука woocommerce_order_status_changed для расширения функционала WooCommerce
07.05.2026
Как удалить проблемы с перенаправлениями после смены домена в WordPress
02.05.2026