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

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

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

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

Сначала стоит проверить, что именно индексируется. В WordPress поиск обычно открывается по адресу вида /?s=запрос или через ЧПУ, если тема/плагин его настраивает. Если такие страницы уже попали в индекс, в выдаче можно увидеть:

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

Что проверить до правок

  • Откройте несколько URL поиска вручную и убедитесь, что это именно результаты поиска, а не отдельная страница темы.
  • Посмотрите исходный код: есть ли на странице noindex уже сейчас.
  • Проверьте robots.txt: иногда там пытаются закрыть ?s=, но это не решает вопрос индексации уже известных URL.
  • Если используется SEO-плагин, проверьте, не добавляет ли он собственные мета-теги для search-страниц.

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

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

Если у вас есть доступ к коду темы или небольшому mu-plugin, можно сделать это через стандартный фильтр wp_robots. Он работает в современных версиях WordPress и не зависит от конкретной темы.

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

    return $robots;
} );

Этот вариант предпочтительнее, чем вручную вставлять мета-тег в шаблон: WordPress сам сформирует корректный набор директив для robots.

Если нужен жёсткий запрет через заголовок

Иногда удобнее отдать X-Robots-Tag на уровне PHP. Это полезно, если тема нестабильно выводит <head> или есть риск, что SEO-плагин перезапишет мета-теги.

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

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

Если на сайте уже стоит SEO-плагин

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

ПодходПлюсыМинусы
Код через wp_robotsПрозрачно, не зависит от плагинаНужно править код и следить за темой
X-Robots-Tag через send_headersРаботает даже при проблемах с шаблономТруднее отлаживать при конфликтах
Настройка в SEO-плагинеУдобно для редактора сайтаЗависит от конкретного плагина и его логики

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

Пошаговое решение без плагина

  1. Проверьте, как выглядит поиск на фронтенде: ?s= или ЧПУ.
  2. Добавьте один из вариантов noindex в дочернюю тему или mu-plugin.
  3. Очистите кеш страницы, если он есть.
  4. Проверьте исходный код страницы поиска и заголовки ответа.
  5. Убедитесь, что обычные страницы сайта не получили случайный noindex.

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

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

Проверка должна быть не «на глаз», а по факту ответа сервера и HTML.

  • Откройте страницу поиска в браузере и посмотрите исходный код: должен быть noindex.
  • Проверьте заголовки ответа через DevTools или curl -I: если используете X-Robots-Tag, он должен присутствовать.
  • Убедитесь, что обычные записи и страницы не получили этот тег.
  • Если сайт кэшируется, проверьте не только главную копию, но и страницу после очистки кеша.
curl -I "https://example.com/?s=test"

В ответе ищите либо заголовок X-Robots-Tag: noindex, follow, либо наличие мета-роботов в HTML, если вы использовали фильтр wp_robots.

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

Закрыли поиск в robots.txt и решили, что этого достаточно

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

Поставили noindex на все страницы сайта

Такое бывает после неаккуратной правки шаблона или глобального фильтра. Проверяйте условие is_search() и не расширяйте его на архивы, категории и записи без необходимости.

Не очистили кеш

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

SEO-плагин перезаписал ваши настройки

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

Что ещё стоит учесть для производительности и чистоты индекса

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

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

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

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

Как создать автоматический отзыв на блоке Gutenberg в WordPress
07.04.2026
WooCommerce: отладка проблем с распоряжением заказами и их статусами
13.06.2026
Как установить и настроить WooCommerce на WordPress
14.11.2025
Как создать автоматический отчет о проблемах WordPress
27.01.2026
Как отключить заказы без оплаты в WooCommerce и оставить только оплаченные способы
11.08.2026