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

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

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

Когда внутренний поиск становится проблемой

Не каждый сайт обязан закрывать поиск от индексации. Если у вас небольшой блог и поисковые страницы не попадают в выдачу, трогать ничего не нужно. Но если в Search Console уже видны URL с параметром s, а в индексе появляются страницы с тонким или пустым контентом, это повод вмешаться.

Типичные признаки:

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

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

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

Диагностика: как понять, что проблема есть

Сначала проверьте, как WordPress отдаёт поисковые URL. Откройте несколько вариантов:

  • https://site.ru/?s=тест
  • https://site.ru/?s=
  • страницу поиска в теме, если она использует красивый URL.

Посмотрите исходный код страницы и заголовки. Если в <head> нет noindex, а страница доступна по HTTP 200, поисковик может её индексировать. Ещё полезно проверить, не создаёт ли тема отдельный шаблон поиска с собственными мета-тегами, которые конфликтуют с SEO-плагином.

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

Пошаговое решение

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

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

Вариант 1: закрыть поиск через код

Если вам нужен надёжный и прозрачный способ, добавьте правило, которое ставит noindex, follow для поисковых страниц. Удобнее делать это в mu-plugin или в дочерней теме, а не в родительской теме, чтобы не потерять правку при обновлении.

<?php
/**
 * Plugin Name: Noindex for search pages
 */

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

add_filter('wp_robots', function ($robots) {
    if (is_search()) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }
    return $robots;
});

Этот вариант хорош тем, что использует штатный механизм wp_robots. Если тема уже выводит robots-мета через WordPress, вы не создаёте лишний дублирующий код. Но если в теме есть собственный вывод <meta name="robots">, проверьте, не появляется ли на странице два одинаковых тега.

Вариант 2: запретить индексацию через SEO-плагин

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

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

Вариант 3: дополнительно убрать поиск из карты сайта

Поисковые URL не должны попадать в XML-карту сайта. Обычно WordPress сам их туда не добавляет, но если у вас кастомная генерация ссылок или нестандартный SEO-плагин, это стоит проверить отдельно. Карта сайта должна содержать только канонические страницы, которые вы действительно хотите индексировать.

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

После правки не ограничивайтесь визуальной проверкой. Нужны три шага:

  1. Откройте /?s=тест и посмотрите исходный код: должен быть noindex.
  2. Проверьте HTTP-заголовки, если у вас есть доступ к серверу или инструментам разработчика.
  3. В Search Console отправьте URL на проверку и посмотрите, как робот видит страницу.

Если используете командную строку, можно быстро проверить заголовки через curl:

curl -I 'https://site.ru/?s=тест'

В ответе важно увидеть, что страница не выглядит как обычная индексируемая посадочная. Если сервер или плагин отдают X-Robots-Tag: noindex, это тоже рабочий вариант. Главное — чтобы правило реально применялось к поисковым URL.

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

  • Закрыли весь сайт вместо поиска. Обычно это происходит, если в SEO-плагине включили глобальный noindex для архива или случайно добавили правило не в ту условную проверку. Решение: проверьте, что условие завязано именно на is_search().
  • Добавили meta robots, но страница всё равно индексируется. Иногда поисковик видит старую версию страницы или правило конфликтует с каноникалами. Решение: проверьте заголовки ответа и дождитесь переобхода.
  • В теме два тега robots. Это бывает, когда SEO-плагин и кастомный код оба выводят мета-тег. Решение: оставьте один источник правды.
  • Закрыли поиск, но он остался в sitemap. Значит, карта сайта генерируется отдельно и не учитывает ваш фильтр. Решение: проверьте настройки sitemap и исключите служебные URL.
  • Поставили noindex, но не follow не сработал. Некоторые плагины или темы переопределяют robots-правила. Решение: смотрите итоговый HTML, а не только настройки в админке.

Что делать с пустыми и мусорными поисковыми запросами

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

<?php
add_action('template_redirect', function () {
    if (is_search() && !get_search_query(false)) {
        wp_safe_redirect(home_url('/'), 302);
        exit;
    }
});

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

Безопасность и производительность

Не правьте functions.php основной темы на живом сайте, если у вас нет нормального процесса деплоя. Для таких задач безопаснее использовать mu-plugin или дочернюю тему. Тогда обновление темы не сотрёт правку, а откат будет проще.

Если на сайте много трафика, не добавляйте тяжёлую логику в wp_head. Для проверки is_search() этого не нужно — условие дешёвое. Но если вы начинаете строить сложные правила по ролям, языкам и параметрам запроса, лучше вынести их в отдельный плагин и протестировать на staging.

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

Через несколько дней после внедрения проверьте:

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

Если всё это выполняется, значит вы закрыли именно техническую проблему, а не просто спрятали симптом. Для WordPress это обычно и есть правильный результат: минимальное вмешательство, понятное правило и проверка на уровне HTML, а не только в админке.

Как закрыть от индексации архивы таксономий в WordPress
01.10.2026
Как закрыть дубли страниц от пагинации от индексации в WordPress
11.09.2026
Как настроить robots.txt и meta robots в WordPress для закрытия служебных страниц
01.09.2026
Как добавить поддержку WebP в WordPress без плагинов
30.09.2026
Как удалить пустые категории в WordPress с помощью кода
01.10.2026