Внутренний поиск WordPress часто создаёт страницы, которые поисковикам не нужны: результаты по пустым запросам, мусорные комбинации параметров, дубли с разными URL и тонкие страницы без ценности. Если такие адреса уже попали в индекс, они начинают конкурировать с нормальными страницами сайта и размывают краулинговый бюджет.
Ниже разберём, как аккуратно закрыть страницы поиска от индексации, не сломав сам поиск для пользователей и не оставив сайт с лишними ошибками.
Когда проблема действительно есть
Сначала стоит убедиться, что речь именно о страницах поиска, а не о других URL с параметрами. Типичный адрес в WordPress выглядит так: /?s=запрос. На некоторых сайтах используются красивые ссылки вида /search/запрос/, но логика та же: это результаты поиска, а не самостоятельный контент.
Проблема обычно проявляется в одном из сценариев:
- в индексе появляются страницы вида
?s=или?s=купить; - в отчётах Search Console растёт количество страниц с низкой ценностью;
- поисковик показывает в выдаче результаты поиска вместо нормальных посадочных страниц;
- на сайте есть внутренний поиск по товарам, статьям или документации, и он генерирует много однотипных URL.
Как проверить, что именно индексируется
Откройте поиск по сайту и посмотрите, какой URL формируется после отправки формы. Затем проверьте несколько адресов в поиске Google или Яндекса по оператору site:. Если в выдаче есть страницы с параметром s=, их лучше закрыть от индексации, а не надеяться, что поисковик сам догадается.
Дополнительно полезно посмотреть серверные логи или отчёт по сканированию, если он есть. Часто видно, что робот ходит по десяткам вариантов одного и того же поиска, особенно если на сайте есть автоподстановка, фильтры или похожие запросы.
Что выбрать: noindex, robots.txt или редирект
Для страниц поиска обычно не нужен редирект на главную. Это плохая замена: пользователь и робот теряют контекст, а поисковик может считать такую подмену мягкой ошибкой. Закрывать через robots.txt тоже не всегда достаточно, потому что запрет на сканирование не равен запрету на индексацию, если URL уже известен поисковику.
| Подход | Когда подходит | Минус |
|---|---|---|
noindex | Для страниц поиска, которые должны работать для пользователей, но не нужны в выдаче | Нужно корректно отдать мета-тег или заголовок |
robots.txt | Как дополнительная мера против лишнего сканирования | Не гарантирует удаление уже известных URL из индекса |
| Редирект | Почти никогда для внутреннего поиска | Ломает сценарий пользователя и искажает смысл URL |
На практике рабочая схема обычно такая: noindex, follow для страниц поиска плюс аккуратная настройка robots.txt, если сайт генерирует слишком много мусорных запросов.
Пошаговое решение через код
Если у вас нет SEO-плагина или вы хотите контролировать поведение на уровне темы, можно добавить мета-тег noindex для страниц поиска через wp_head. Это простой и проверяемый вариант.
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex, follow">' . "\n";
}
}, 1 );Этот код говорит поисковику не индексировать страницу поиска, но не запрещает переходить по ссылкам внутри неё. Для большинства сайтов этого достаточно.
Если у вас используются нестандартные шаблоны поиска или плагин, который выводит результаты не через стандартный is_search(), проверьте, что условие срабатывает именно на нужных страницах. Иначе можно случайно закрыть не тот тип контента.
Если нужно закрыть ещё и саму выдачу в robots.txt
Это не замена noindex, а дополнительная мера. В WordPress можно добавить правило через фильтр robots_txt:
add_filter( 'robots_txt', function ( $output, $public ) {
$output .= "\nDisallow: /?s=";
$output .= "\nDisallow: /search/";
return $output;
}, 10, 2 );Такой вариант полезен, если бот активно сканирует поиск по шаблонным URL. Но не стоит рассчитывать, что одно только правило в robots.txt уберёт уже проиндексированные страницы. Для этого нужен именно noindex или удаление URL через инструменты поисковика.
Если используете SEO-плагин
В Yoast SEO, Rank Math и похожих плагинах для архивов и служебных страниц часто есть отдельные настройки индексации. Но внутренний поиск не всегда покрыт отдельным переключателем, поэтому важно проверить итоговый HTML, а не только интерфейс плагина.
Если плагин уже добавляет свой noindex, не дублируйте его вторым способом без необходимости. Два разных источника разметки иногда приводят к путанице при отладке: в исходнике может быть и мета-тег, и заголовок X-Robots-Tag, и не всегда понятно, что именно сработало.
Для сайтов, где нужно одновременно чистить дубли, служебные страницы и технические архивы, удобнее сначала проверить, не решает ли задачу один SEO-инструмент. Например, в Clearfy Pro есть набор функций для удаления дублей и чистки сайта, но перед включением любых опций всё равно стоит сверить, что именно меняется в HTML и заголовках ответа.
Как проверить результат после внедрения
Проверка должна быть не формальной, а технической. Откройте страницу поиска и посмотрите исходный код: в <head> должен появиться <meta name="robots" content="noindex, follow">. Если вы используете заголовок X-Robots-Tag, проверьте его через инструменты разработчика или curl.
curl -I "https://example.com/?s=test"В ответе ищите заголовок, если вы настраивали именно его. Если работает только мета-тег, то в заголовках его не будет — это нормально.
Дальше проверьте несколько вещей:
- страница поиска открывается для пользователя;
- в исходнике есть
noindex; - поиск по сайту не редиректит на главную;
- в
robots.txtнет лишнего запрета, который ломает полезные разделы; - в Search Console страница поиска не получает новых переходов из индекса после переобхода.
Если URL уже был в индексе, удаление может занять время. Это нормально: поисковик должен переобойти страницу и увидеть новую директиву.
Частые ошибки и как их исправить
Ставят Disallow и ждут удаления из индекса
Это самая частая ошибка. Если робот не может сканировать страницу, он может не увидеть и noindex, если URL уже известен. В итоге адрес остаётся в индексе дольше, чем ожидалось. Исправление простое: сначала дайте роботу увидеть noindex, а уже потом дополнительно ограничивайте сканирование, если это нужно.
Редиректят поиск на главную
Так делают, когда хотят быстро убрать «лишние» страницы. Но для пользователя это плохой опыт, а для поисковика — сигнал о некачественной подмене. Если поиск не нужен, лучше отключить саму форму или изменить логику шаблона, а не отправлять все запросы на главную.
Закрывают не только поиск, но и полезные страницы с параметрами
На некоторых сайтах параметры в URL используются не для поиска, а для сортировки, фильтрации или выбора языка. Если писать слишком широкие правила, можно случайно закрыть важные страницы. Перед внедрением проверьте, какие именно URL формирует сайт, и не смешивайте поиск с другими параметрами.
Не проверяют, что код срабатывает на всех шаблонах
Если тема переопределяет поиск или использует кастомный шаблон, условие is_search() может работать не там, где вы ожидаете. В таком случае откройте шаблон поиска, проверьте, как формируется запрос, и убедитесь, что код подключён в активной теме или через mu-plugin, а не в файле, который легко потерять при обновлении.
Практические советы по безопасности и производительности
Если на сайте много мусорных поисковых запросов, это не только SEO-проблема. Иногда такие URL создают лишнюю нагрузку на базу данных, особенно если поиск настроен через тяжёлые JOIN-запросы или подключены дополнительные фильтры. В этом случае полезно ограничить длину запроса, отключить бессмысленные пустые поиски и проверить, не кешируется ли выдача слишком агрессивно.
Для сайтов с высокой посещаемостью лучше вынести правки в небольшой mu-plugin, а не держать их в functions.php темы. Тогда настройка не потеряется при смене темы и её проще сопровождать.
<?php
/**
* Plugin Name: Search Noindex Helper
*/
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex, follow">' . "\n";
}
}, 1 );Такой файл можно положить в wp-content/mu-plugins/. Это удобнее, чем править тему, если задача чисто техническая и не связана с дизайном.
Если вам нужно не только закрыть поиск, но и системно почистить сайт от дублей, служебных страниц и лишних технических следов, имеет смысл смотреть на инструменты, которые решают несколько таких задач сразу. Но перед установкой любого плагина проверяйте, какие именно мета-теги, заголовки и правила он добавляет, чтобы не получить конфликт с уже существующей SEO-настройкой.
В итоге рабочая схема для большинства сайтов простая: noindex, follow на страницах поиска, при необходимости дополнительный Disallow в robots.txt, затем проверка исходника и заголовков ответа. Это даёт предсказуемый результат без лишних редиректов и без риска сломать пользовательский поиск.