Внутренний поиск в WordPress часто создаёт страницы, которые поисковикам не нужны: результаты по пустым запросам, мусорные сочетания символов, дубли с параметрами и страницы без полезного контента. Если такие URL попадают в индекс, они начинают конкурировать с нормальными страницами сайта и раздувают отчёты в Search Console.
Задача здесь не в том, чтобы «сломать поиск», а в том, чтобы оставить его для пользователей и одновременно закрыть от индексации всё, что не должно ранжироваться. Ниже — рабочая схема: как диагностировать проблему, что именно закрывать, чем отличается noindex от robots.txt, и как проверить, что всё действительно сработало.
Когда внутренний поиск становится проблемой
Типичный сценарий выглядит так: в индексе появляются URL вида /search/..., /?s=... или страницы поиска с параметрами сортировки и фильтрации. На небольшом сайте это может быть незаметно, но на контентном проекте такие адреса быстро превращаются в шум.
Проблема усиливается, если:
- поиск индексируется без ограничений и отдаёт страницы с тонким или пустым контентом;
- поисковые запросы формируются из случайных символов, стоп-слов или очень коротких фраз;
- в результатах поиска появляются дубли уже существующих архивов и записей;
- сайт использует кэш, но поисковые URL всё равно генерируются в большом количестве;
- в шаблоне поиска есть каноникал на саму страницу с параметрами, а не на чистый URL.
Диагностика: какие URL уже попали в индекс
Сначала нужно понять масштаб. Не стоит закрывать всё подряд, пока не ясно, какие именно адреса индексируются.
Проверка через Search Console
Откройте отчёт по страницам и найдите URL с признаками поиска: ?s=, /search/, параметры сортировки, фильтры. Если есть отдельный отчёт по исключённым страницам, посмотрите, не растёт ли там число URL с поисковыми параметрами.
Полезно проверить и ручным поиском по сайту в Google:
site:example.ru inurl:?s=Если поисковик уже видит такие страницы, значит, закрывать их нужно не только в robots.txt, но и на уровне мета-роботов или заголовков ответа.
Проверка шаблона поиска в теме
В WordPress поиск обычно строится на параметре s. На многих сайтах это URL вида /?s=запрос. Если тема или плагин переписывает адреса, может появиться отдельный путь вроде /search/запрос/. Это важно, потому что правила закрытия должны соответствовать реальному формату URL.
Посмотрите исходный код страницы поиска и ответ сервера. Если там нет noindex, а канонический URL указывает на саму поисковую страницу, поисковик может продолжать её обходить и индексировать.
Что закрывать: не весь поиск, а только его индексируемую часть
Самая частая ошибка — полностью запрещать обход поиска в robots.txt и считать задачу решённой. Это не всегда работает, потому что URL может остаться в индексе как найденный по внешним ссылкам или внутренним переходам. Для надёжного результата обычно нужен комбинированный подход.
| Подход | Что делает | Когда подходит | Минус |
|---|---|---|---|
robots.txt | Запрещает обход | Как дополнительная мера | Не гарантирует удаление из индекса |
noindex | Просит не индексировать страницу | Для страниц поиска и пустых результатов | Нужно, чтобы бот мог страницу увидеть |
| Каноникал | Указывает основную версию URL | Для дублей с параметрами | Не заменяет noindex для поиска |
Для внутренних поисковых страниц обычно достаточно noindex, follow. Это позволяет не индексировать саму страницу, но не мешает ботам переходить по ссылкам дальше, если они есть в результатах.
Пошаговое решение через код темы или плагина
Если у вас есть доступ к теме или небольшому функциональному плагину, самый надёжный вариант — добавить мета-тег robots для страниц поиска. Это не зависит от настроек SEO-плагина и работает предсказуемо.
1. Добавить noindex для страниц поиска
Вставьте код в functions.php дочерней темы или в свой мини-плагин:
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
} );Если тема уже выводит мета-robots через SEO-плагин, не дублируйте тег. В этом случае лучше использовать настройки плагина или его фильтры, а не добавлять второй meta вручную.
2. Отдать заголовок X-Robots-Tag для поиска
Для некоторых конфигураций полезнее добавить заголовок ответа. Это особенно удобно, если шаблон страницы поиска нестандартный или если вы хотите закрыть от индексации не только HTML, но и другие ответы.
add_action( 'template_redirect', function () {
if ( is_search() ) {
header( 'X-Robots-Tag: noindex, follow', true );
}
} );Этот способ не отменяет необходимость проверить, не отправляет ли тема уже свои заголовки раньше. Если на сайте есть кэширующий слой или серверные правила, убедитесь, что заголовок не затирается.
3. Ограничить пустые и мусорные запросы
Если сайт активно получает пустые или бессмысленные запросы, можно не только закрыть их от индексации, но и не отдавать полноценную страницу результатов. Например, для пустого поиска лучше вернуть обычную страницу поиска без выдачи или сообщение без индексации.
add_action( 'template_redirect', function () {
if ( is_search() ) {
$query = trim( get_search_query( false ) );
if ( $query === '' || mb_strlen( $query ) < 2 ) {
status_header( 200 );
}
}
} );Здесь важно не переусердствовать: не превращайте поиск в 404 без причины, если пользователи реально используют короткие запросы. Лучше сначала посмотреть статистику запросов и поведение аудитории.
Если используете SEO-плагин: где проверить настройки
Во многих случаях проще закрыть поиск через SEO-плагин, если он уже отвечает за robots и каноникал. Смысл тот же: для страниц поиска должен быть noindex, а не просто запрет в robots.txt.
Проверьте:
- есть ли отдельная настройка для страниц поиска;
- не добавляет ли плагин каноникал на саму поисковую страницу с параметрами;
- не конфликтует ли настройка с кастомным кодом в теме;
- не закрыты ли случайно все архивы и страницы сайта вместе с поиском.
Если вы используете Clearfy Pro, там есть инструменты для чистки SEO-мусора и управления дублями. Это не отменяет ручную проверку, но помогает централизовать часть настроек, если на сайте уже накопилось много технического шума. Ссылка на продукт: Clearfy Pro.
Проверка результата после внедрения
После правки не ограничивайтесь просмотром кода страницы. Нужно проверить и ответ сервера, и поведение поисковиков.
Что проверить вручную
- Откройте страницу поиска и посмотрите исходный код: должен быть
noindex,follow. - Проверьте заголовки ответа через DevTools или
curl. - Убедитесь, что обычные страницы сайта не получили случайный
noindex. - Проверьте, что поиск по сайту по-прежнему работает для пользователей.
Пример проверки заголовков:
curl -I "https://example.ru/?s=test"В ответе ищите строку X-Robots-Tag: noindex, follow, если вы использовали этот вариант.
Что смотреть в Search Console
Изменения не всегда видны мгновенно. Но если всё сделано правильно, со временем поисковик начнёт реже обходить такие URL, а в отчётах по индексированию снизится число страниц поиска. Если URL уже был в индексе, он может оставаться там какое-то время — это нормально.
Если после нескольких обходов страницы поиска всё ещё индексируются, проверьте три вещи: нет ли второго каноникала, не блокируется ли страница в robots.txt раньше, чем бот видит noindex, и не генерирует ли тема отдельные URL поиска с другим шаблоном.
Частые ошибки и как их исправить
Закрыли поиск только в robots.txt
Это самая распространённая ошибка. Запрет обхода не равен удалению из индекса. Если URL уже известен поисковику, он может остаться в выдаче без сниппета или с устаревшей информацией. Для поиска нужен именно noindex или заголовок X-Robots-Tag.
Поставили noindex на все архивы
Иногда под раздачу попадают категории, теги и авторы. Это уже другая задача. Не смешивайте закрытие поиска с общей SEO-настройкой сайта, иначе можно случайно убрать из индекса полезные страницы.
Сломали каноникал
Если канонический URL указывает на саму страницу поиска с параметрами, поисковик может считать её отдельной сущностью. Для поиска это обычно не нужно. Каноникал должен быть согласован с общей логикой индексации сайта.
Добавили два разных решения одновременно
Например, SEO-плагин уже выводит noindex, а в теме вручную добавили ещё один тег или заголовок. Это не всегда критично, но усложняет диагностику и может запутать при проверке. Лучше оставить один источник правды.
Практические советы по безопасности и производительности
Закрытие поиска от индексации не решает проблему нагрузки, если сайт получает много бессмысленных запросов. На больших проектах стоит отдельно посмотреть на частоту запросов к поиску и кэширование.
- не кэшируйте мусорные поисковые запросы на длительный срок;
- ограничьте слишком короткие запросы на уровне логики темы, если это допустимо для проекта;
- следите, чтобы поиск не раскрывал приватный контент через результаты;
- проверяйте, не индексируются ли страницы поиска из sitemap или внутренних ссылок;
- после обновления темы повторно проверьте шаблон поиска, потому что разработчики иногда меняют вывод мета-тегов.
Если у вас на сайте много технических дублей и лишних страниц, имеет смысл не ограничиваться только поиском. В таких случаях полезно один раз пройтись по всей логике индексации: архивы, параметры, пагинация, служебные страницы и внутренний поиск. Это дешевле, чем потом вручную вычищать индекс по кускам.
Главный критерий успеха здесь простой: поисковик видит страницу поиска, но не считает её полезной для индекса. Если после внедрения в коде остался noindex,follow, а в Search Console поисковые URL постепенно уходят из отчётов, значит, решение работает так, как нужно.