Внутренний поиск WordPress часто создает страницы вида ?s=..., которые не несут самостоятельной ценности для поиска. Если такие URL попадают в индекс, они начинают конкурировать с основными страницами сайта, а в отчетах Search Console появляются лишние URL с низким качеством. При этом сам поиск на сайте должен продолжать работать — задача не в том, чтобы его отключить, а в том, чтобы правильно закрыть результаты поиска от индексации.
Когда это действительно проблема
Сценарий обычно выглядит так: пользователь вводит запрос, получает страницу результатов поиска, а затем видит, что такие URL индексируются и иногда даже ранжируются. Для небольших сайтов это может быть просто шумом, но на контентных проектах и корпоративных сайтах с большим количеством страниц это быстро превращается в набор дублей и мусорных URL.
Проверить наличие проблемы можно вручную и через инструменты для вебмастеров:
- введите запрос в поиск сайта и посмотрите URL результата;
- проверьте, есть ли в индексе адреса с
?s=; - посмотрите, не появляются ли такие страницы в отчетах по страницам с исключением или без описания;
- сравните заголовок и содержимое страницы поиска — обычно они слишком общие для индекса.
Что именно нужно закрывать
Важно не путать несколько разных задач. Закрывать нужно не весь поиск, а именно страницы результатов поиска. Сам механизм поиска, форма и обработка запроса должны остаться рабочими. Если на сайте есть отдельная страница поиска с красивым URL и кастомной логикой, подход может отличаться, но для стандартного WordPress чаще всего достаточно управлять мета-роботами и заголовками ответа.
Диагностика: как понять, что у вас стандартный поиск
Если URL результата выглядит как https://example.com/?s=запрос или как архив поиска темы, значит вы имеете дело со стандартным поиском WordPress. В этом случае решение можно внедрить без правки шаблонов темы, через хук wp_robots или через фильтр wpseo_robots, если у вас уже стоит SEO-плагин. Но не стоит смешивать оба подхода без необходимости: лучше выбрать один источник управления индексированием.
Пошаговое решение без плагина
Самый предсказуемый вариант — добавить правило для страниц поиска в functions.php дочерней темы или в небольшой mu-plugin. Это не ломает поиск и не зависит от интерфейса SEO-плагина.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
$robots['noarchive'] = true;
}
return $robots;
} );
Что делает этот код:
noindexзапрещает индексацию страницы поиска;nofollowне передает вес по ссылкам со страницы результатов;noarchiveубирает сохраненную копию в поиске, если робот ее учитывает.
Если тема или плагин уже выводят собственные robots-мета, проверьте, не дублируется ли директива. В норме на странице поиска должен остаться один корректный набор правил, а не несколько конфликтующих блоков.
Если используется SEO-плагин
Когда на сайте уже стоит Yoast SEO, Rank Math или аналогичный плагин, часто проще управлять индексацией через его настройки. Но даже в этом случае полезно проверить, не переопределяет ли тема robots meta вручную. Встречается ситуация, когда плагин ставит noindex, а шаблон темы выводит свой index,follow — и в итоге поисковик получает противоречивые сигналы.
| Подход | Плюсы | Минусы |
|---|---|---|
Код через wp_robots | Не зависит от плагина, легко контролировать | Нужно аккуратно вносить в тему или mu-plugin |
| Настройка в SEO-плагине | Удобно для редактора и SEO-специалиста | Может конфликтовать с темой или кастомным шаблоном |
| Полное отключение поиска | Просто технически | Ломает пользовательский сценарий, обычно не подходит |
Дополнительная защита: заголовок ответа и каноникал
Для обычной страницы поиска достаточно noindex, но на крупных сайтах полезно проверить и сопутствующие сигналы. Если тема генерирует канонический URL для поиска, он должен указывать на саму страницу поиска, а не на главную или на случайный архив. Иначе поисковик может игнорировать ваши директивы или интерпретировать страницу как дубль другого документа.
Если вы хотите усилить поведение на уровне ответа сервера, можно добавить заголовок X-Robots-Tag для поисковых страниц. Это особенно полезно, когда часть URL обрабатывается не шаблоном, а промежуточным слоем кеша или прокси.
<?php
add_action( 'template_redirect', function() {
if ( is_search() && ! headers_sent() ) {
header( 'X-Robots-Tag: noindex, nofollow, noarchive', true );
}
} );
Этот вариант не заменяет мета-тег, но помогает, если вы хотите продублировать правило на уровне HTTP-ответа. Используйте его аккуратно: не отправляйте заголовки после вывода HTML и не вешайте этот код на все страницы сайта.
Как проверить, что решение сработало
После внедрения проверьте не только исходный код страницы, но и фактический ответ сервера.
- Откройте страницу поиска в браузере и посмотрите исходный код: должен быть
noindex. - Проверьте заголовки ответа через DevTools или
curl -I: если добавлялиX-Robots-Tag, он должен присутствовать. - Убедитесь, что поиск по сайту по-прежнему возвращает результаты.
- Через несколько дней проверьте Search Console: новые URL поиска не должны активно накапливаться в индексе.
Пример проверки через консоль:
curl -I 'https://example.com/?s=test'
Если сайт отдает кешированную страницу, убедитесь, что кеш не хранит старую версию без noindex. Иногда после правки кода проблема остается только потому, что CDN или плагин кеша продолжает отдавать старый HTML.
Частые ошибки и как их исправить
- Закрыли поиск через robots.txt. Это не решает задачу полностью: URL может остаться в индексе без обхода, а сигнал
noindexпоисковик не увидит. - Поставили
noindexтолько на одну тему оформления. После смены темы правило исчезает. Лучше вынести код в mu-plugin или в дочернюю тему. - Сломали поиск вместе с индексацией. Иногда разработчики отключают саму обработку запроса
?s=. Это уже не про SEO, а про функциональность сайта. - Получили конфликт с SEO-плагином. Проверьте, не выводит ли тема собственный robots meta вручную.
- Не очистили кеш. После изменения правил обязательно сбросьте кеш страницы, объектный кеш и CDN, если он есть.
Практические советы по безопасности и производительности
Если на сайте много поисковых запросов, они могут создавать лишнюю нагрузку на базу данных и кеш. Это не повод отключать поиск, но повод ограничить мусорные запросы и следить за тем, чтобы страницы поиска не индексировались. Для сайтов с большим количеством дублей и технического мусора полезно периодически проверять, не плодят ли темы и плагины лишние архивы, теги и параметры URL. В таких задачах иногда помогает набор инструментов вроде Clearfy Pro, если нужен не один точечный фикс, а системная чистка сайта и управление техническими дублями.
Если вы внедряете решение на клиентском проекте, держите его в отдельном небольшом плагине или mu-plugin. Так проще обновлять тему, переносить правку между окружениями и не потерять настройку после редизайна.
В итоге рабочая схема простая: поиск остается доступным пользователю, но страницы результатов не конкурируют в индексе и не засоряют отчетность. Для стандартного WordPress этого обычно достаточно, если не забыть проверить кеш, заголовки и конфликты с SEO-плагинами.