WP-Team

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

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

Для WordPress это обычно решается на уровне мета-тега robots, заголовка X-Robots-Tag или через SEO-плагин. Самый безопасный подход — запретить индексацию страниц поиска, но оставить их доступными для пользователей и внутреннего поиска сайта.

Какие страницы нужно закрывать

В WordPress страница поиска обычно выглядит как URL с параметром ?s=запрос. Например, / ?s=seo или / ?s=wordpress. Именно такие страницы и нужно закрывать от индексации. Они не должны попадать в выдачу поисковиков, потому что содержат динамический набор результатов и часто меняются от запроса к запросу.

При этом не стоит путать страницу поиска с другими служебными URL:

  • архивами рубрик и меток;
  • страницами пагинации;
  • страницами фильтров в интернет-магазине;
  • страницами входа и личного кабинета.

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

Самый надёжный способ: запретить индексацию через SEO-плагин

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

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

Почему обычно выбирают именно noindex, follow, а не жёсткий запрет через robots.txt: если поисковик не может открыть страницу, он не увидит директиву noindex в HTML. В результате URL может ещё какое-то время висеть в индексе как известный, но недоступный документ. Для поиска WordPress это не лучший вариант.

Если в плагине есть отдельная настройка для страниц поиска, включите её и сохраните изменения. После этого проверьте исходный код страницы поиска: в секции <head> должен появиться мета-тег с noindex.

Если плагина нет: добавьте noindex в шаблон

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

Для WordPress есть встроенная проверка is_search(). Она срабатывает только на страницах поиска. В functions.php дочерней темы можно добавить такой код:

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

Этот вариант добавляет мета-тег только на страницах поиска. Для поисковых систем этого обычно достаточно, если страница доступна по HTTP и не блокируется в robots.txt.

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

Когда лучше использовать X-Robots-Tag

Иногда удобнее закрывать от индексации не через HTML-шаблон, а на уровне ответа сервера. Для этого используют заголовок X-Robots-Tag: noindex, follow. Такой подход полезен, если шаблон страницы поиска сложно править или если нужно управлять индексацией на уровне сервера.

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

Пример для Apache, если нужно добавить заголовок только для URL с параметром поиска:

<IfModule mod_headers.c>
    <If "%{QUERY_STRING} =~ /(^|&)s=/">
        Header set X-Robots-Tag "noindex, follow"
    </If>
</IfModule>

Такой фрагмент стоит использовать только если вы уверены, что сервер поддерживает mod_headers и условные директивы Apache 2.4. На общем хостинге это не всегда доступно. Если есть сомнения, безопаснее закрывать поиск через WordPress или SEO-плагин.

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

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

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

Не нужно закрывать от индексации саму форму поиска на сайте. Форма — это часть интерфейса, а не индексируемая страница. Закрывать нужно именно результаты поиска по запросу.

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

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

После настройки откройте несколько страниц поиска вручную. Посмотрите исходный код страницы и убедитесь, что в <head> есть мета-тег с noindex. Если вы использовали заголовок X-Robots-Tag, проверьте ответ сервера через инструменты разработчика браузера или через онлайн-проверку заголовков.

Дальше имеет смысл проверить URL в Google Search Console или Яндекс Вебмастере, если сайт уже добавлен туда. Сразу исчезновение из индекса не происходит: поисковику нужно время, чтобы переобойти страницу и учесть новую директиву. Это нормальное поведение, а не ошибка настройки.

Если страница поиска всё ещё индексируется спустя время, проверьте три вещи:

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

Что выбрать на практике

Если нужен быстрый и безопасный вариант, используйте настройку в SEO-плагине. Если плагина нет, добавьте noindex в шаблон через is_search(). Если у вас есть доступ к серверной конфигурации и нужно централизованное управление, можно использовать X-Robots-Tag.

СпособКогда подходитПлюсыОграничения
SEO-плагинПлагин уже установлен и умеет управлять индексациейПросто, без правки кодаЗависит от возможностей плагина
wp_head и is_search()Нужна точечная правка темыРаботает на уровне WordPressНужно аккуратно редактировать тему
X-Robots-TagЕсть доступ к конфигу сервераУправление на уровне ответа сервераЗависит от хостинга и веб-сервера

Для большинства сайтов достаточно первого или второго варианта. Главное — закрыть именно страницы результатов поиска, а не весь поиск как функцию. Тогда служебные URL перестанут засорять индекс, а пользователи по-прежнему смогут искать по сайту.

×
Твой WordPress — твои правила!

Топовые темы и плагины со скидкой 20%.

Забрать выгодно ⋙