Как запретить индексацию страниц поиска в WordPress без потери внутреннего поиска

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

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

Если в поисковой выдаче Google или Яндекса появляются URL вида ?s=, это обычно не приносит трафик и только раздувает индекс. Чаще всего такие страницы имеют слабый или нулевой контент, а поисковик тратит на них краулинговый бюджет вместо нормальных материалов.

Проверить проблему можно быстро:

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

Что не стоит делать

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

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

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

ПодходЧто делаетПлюсМинус
Код в теме/плагинеДобавляет noindex,follow на search-страницыТочно и без лишних зависимостейНужно аккуратно внедрить
SEO-плагинДаёт настройку для архивов/страниц поискаБыстро для редактораНе всегда есть тонкая гранулярность
robots.txtОграничивает обходПросто добавитьНе удаляет уже известные URL из индекса

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

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

<?php
/**
 * Plugin Name: Search Pages Noindex
 * Description: Adds noindex to WordPress search result pages.
 */

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

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

Если нужен более жёсткий вариант для пустых выдач

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

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

    return $robots;
} );

Такой способ предпочтительнее, чем ручной вывод мета-тега, если вы уже используете современную логику wp_robots. Но важно помнить: фильтр сработает только в контексте, где WordPress уже сформировал запрос и знает, есть ли записи.

Что добавить в robots.txt

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

User-agent: *
Disallow: /*?s=
Disallow: /search/

Если на сайте используется ЧПУ-поиск вида /search/term/, проверьте реальный шаблон URL. Не копируйте правило вслепую: лишний Disallow может задеть полезные страницы.

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

После внедрения не ограничивайтесь просмотром кода страницы. Нужно проверить и HTML, и индексацию, и поведение поиска.

  • Откройте страницу поиска с любым запросом и убедитесь, что в <head> есть <meta name="robots" content="noindex,follow" />.
  • Проверьте исходный код страницы, а не только визуальный результат в браузере.
  • В Search Console отправьте URL на повторную проверку, если он уже был в индексе.
  • Через несколько дней посмотрите, уменьшается ли число проиндексированных search-URL.
  • Убедитесь, что обычный поиск по сайту продолжает выдавать результаты пользователю.

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

Закрыли поиск в robots.txt, но URL остались в индексе

Это ожидаемо. Robots.txt запрещает обход, но не гарантирует удаление уже известных страниц. Для вывода URL из индекса нужен noindex или удаление страницы из доступного обхода с последующей переобходом.

Поставили noindex на весь сайт через SEO-плагин

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

Сломали поиск после правки шаблона

Обычно причина в том, что вместе с мета-тегом изменили сам шаблон search.php или фильтры запроса. Если задача только в индексации, не трогайте SQL-запрос и не подменяйте логику поиска без необходимости.

Ожидали мгновенного исчезновения из выдачи

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

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

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

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

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

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

В итоге рабочая схема выглядит так: noindex,follow для search-страниц, при необходимости — аккуратное правило в robots.txt, затем проверка в исходнике и в панели вебмастера. Это закрывает именно мусорные результаты поиска и не мешает пользователю искать по сайту.

Как удалить записи из категории WordPress без удаления постов
02.10.2026
Как создать и настроить динамические формы в WordPress с помощью AJAX
27.09.2026
Как изменить размер и оптимизировать изображения в WordPress: практические решения и примеры кода
13.09.2026
Как правильно настроить cookies в WordPress для защиты и удобства пользователей
24.04.2026
Как использовать хуки для изменения функциональности WordPress
13.09.2026