Страницы внутреннего поиска WordPress часто попадают в индекс не потому, что сайт «плохо настроен», а потому что поисковый робот видит обычные URL вида / ?s=... и считает их отдельными страницами. Для SEO это почти всегда лишний мусор: такие страницы создают дубли, размывают краулинговый бюджет и часто показывают тонкий контент.
При этом закрывать нужно аккуратно. Если просто запретить всё в robots.txt, можно получить ситуацию, когда поисковик продолжит хранить старые URL в индексе, но не сможет увидеть мета-тег noindex. Поэтому сначала важно понять, какой именно сценарий у вас: страницы уже в индексе, только начинают появляться, или проблема связана с параметрами поиска и фильтрами.
Когда страницы поиска становятся проблемой
Типичный URL поиска в WordPress выглядит так: https://site.ru/?s=ключевое+слово. Иногда тема или плагин формируют более «красивый» адрес, но суть та же: это техническая страница, а не посадочная. Если на ней нет уникального полезного контента, индексировать её обычно не нужно.
Диагностика: что проверить до правок
- Откройте несколько URL поиска вручную и посмотрите исходный HTML: есть ли
<meta name="robots" content="noindex,follow">. - Проверьте, не отдает ли страница код
200 OKс пустым или почти пустым списком результатов. - Посмотрите в Google Search Console, есть ли в индексе URL с параметром
s=. - Проверьте, не создают ли плагины фильтров дополнительные параметры, которые индексируются вместе с поиском.
Если проблема только в том, что поисковик видит страницы поиска, но они еще не успели закрепиться в индексе, достаточно корректного noindex. Если URL уже массово попали в индекс, обычно нужен и noindex, и очистка внутренних ссылок, и проверка канонических URL.
Рабочая схема: закрываем search-страницы через код
Самый надежный вариант — добавить noindex,follow для страниц поиска на уровне темы или небольшого mu-plugin. Это не ломает сам поиск для пользователей, но подсказывает роботам не включать такие страницы в индекс.
Вариант через wp_head
Если у вас нет SEO-плагина, который уже управляет robots-мета, можно добавить такой код в functions.php дочерней темы или в отдельный плагин:
<?php
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1 );Этот вариант простой, но его нужно использовать только если вы уверены, что другой плагин не выводит свой robots-тег. Два разных meta name="robots" на одной странице — плохая идея.
Вариант через фильтр wp_robots
Если сайт работает на актуальной версии WordPress, лучше использовать фильтр wp_robots. Он аккуратнее встроен в ядро и не требует ручной печати HTML в head.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Плюс этого подхода в том, что он не конфликтует с разметкой темы и проще поддерживается. Если SEO-плагин тоже управляет robots-правилами, сначала проверьте его настройки, а уже потом добавляйте код.
Что делать с уже проиндексированными URL
Если страницы поиска уже в индексе, одного noindex может быть недостаточно для быстрого выведения. Сначала убедитесь, что страница действительно отдает noindex, потом проверьте внутренние ссылки на поиск: часто они стоят в шапке, в виджетах и в хлебных крошках темы.
Полезно также убрать лишние ссылки на поисковые URL из шаблонов, если тема генерирует их автоматически в неудачном виде. Например, не стоит выводить ссылки на пустые поисковые запросы или на страницы с заранее подставленными параметрами, если они не нужны пользователю.
Когда нужен канонический URL
Для страниц поиска каноникал обычно не решает задачу полностью, но в некоторых темах и плагинах он помогает снизить количество дублей. Если поиск строится с параметрами сортировки или пагинации, важно не плодить отдельные индексируемые версии одного и того же результата.
Если вы используете SEO-плагин, проверьте, не переопределяет ли он canonical на страницах поиска. В большинстве случаев для search-страниц логичнее вообще не пытаться «продавать» их как посадочные.
Сравнение подходов: плагин, код или robots.txt
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если уже используется Yoast, Rank Math или аналог | Удобно централизовать robots-правила | Нужно проверить, не конфликтует ли с темой и кастомным кодом |
Код через wp_robots | Если нужна точечная настройка без лишних зависимостей | Прозрачно, мало кода, легко контролировать | Требует аккуратности при обновлениях темы |
robots.txt | Для ограничения обхода, но не как единственный способ | Просто закрыть часть технических URL от сканирования | Не гарантирует удаление уже известных URL из индекса |
Если задача именно SEO-очистки, обычно выигрывает связка: noindex на самих страницах поиска плюс аккуратная проверка внутренних ссылок. robots.txt можно использовать дополнительно, но не вместо.
Проверка результата после внедрения
После правки не ограничивайтесь открытием страницы в браузере. Нужно проверить именно то, что увидит робот.
- Откройте исходный код страницы поиска и убедитесь, что есть
noindex,follow. - Проверьте заголовки ответа через
curl -Iили инструменты разработчика, чтобы исключить неожиданные редиректы и ошибки. - В Search Console отправьте URL на повторную проверку, если он уже в индексе.
- Посмотрите, не появились ли дубли с параметрами
s=,paged=или другими query string.
curl -I "https://site.ru/?s=test"Если вы видите 200 OK и в HTML присутствует noindex,follow, базовая часть настроена правильно. Дальше вопрос уже в том, как быстро поисковик переобойдет страницу и уберет её из выдачи.
Частые ошибки и как их исправить
Закрыли поиск только в robots.txt
Это частая ошибка. Если URL уже известен поисковику, запрет на обход не равен запрету на индексацию. Для удаления из индекса нужен именно noindex на самой странице.
Поставили два разных robots-тега
Так бывает, когда код добавили вручную, а SEO-плагин уже выводит свои правила. В результате робот получает противоречивые инструкции. Решение простое: оставьте один источник управления robots-метками.
Закрыли поиск, но оставили ссылки на мусорные URL
Если тема генерирует ссылки на пустые или бессмысленные поисковые запросы, робот продолжит их находить. Проверьте шаблоны шапки, сайдбар, блоки «похожие записи» и виджеты поиска.
Сломали внутренний поиск для пользователей
Иногда после правок путают индексацию и доступность. noindex не должен ломать поиск. Если поиск перестал работать, ищите проблему в шаблоне формы, JS или в маршрутизации, а не в robots-метках.
Практические советы по безопасности и производительности
Если на сайте много параметрических URL, полезно держать под контролем не только поиск, но и соседние технические страницы. Это снижает нагрузку на обход и уменьшает число дублей. Для таких задач часто помогает связка SEO-настроек и чистки технических страниц. Например, в Clearfy Pro есть инструменты для удаления дублей и технической оптимизации, если вам нужен готовый набор настроек без ручного кода: https://wpshop.ru/plugins/clearfy.
Но даже с плагином не стоит отключать проверку вручную. После обновления темы или SEO-плагина robots-правила иногда меняются, и это лучше заметить на тестовом URL, чем через месяц в отчете по индексации.
Если нужен короткий рабочий чек-лист, используйте такой порядок:
- проверить, какие search-URL уже в индексе;
- добавить
noindex,followчерезwp_robotsили SEO-плагин; - убрать лишние внутренние ссылки на поиск;
- не полагаться только на
robots.txt; - перепроверить исходный код и Search Console после обновления.