Поисковые страницы WordPress часто попадают в индекс как тонкие дубли: у них мало контента, они создают шум в отчётах и иногда конкурируют с нормальными посадочными страницами. При этом сам внутренний поиск должен продолжать работать для пользователей и для админки. Задача не в том, чтобы «сломать поиск», а в том, чтобы убрать из индекса именно страницы результатов.
Когда проблема уже видна в поиске и в логах
Сначала проверьте, действительно ли в индекс попали URL вида /search/... или ?s=.... Обычно это заметно по одному из сценариев:
- в Google Search Console появляются страницы с параметром
s; - в выдаче находятся результаты поиска по сайту вместо полезных страниц;
- в логах много заходов на URL поиска от роботов, но почти нет пользовательской ценности;
- в отчётах по дублям видны страницы с одинаковым шаблоном и разным поисковым запросом.
Важно не путать индексацию поисковых страниц с запретом на сам поиск. Если вы просто закроете все URL с s через серверный редирект или жёсткий Disallow, можно получить побочные эффекты: поисковая форма останется, но страницы результатов перестанут нормально обрабатываться для пользователей и для некоторых сценариев навигации.
Что именно нужно закрывать
В WordPress поиск обычно живёт в двух вариантах URL: стандартный параметр ?s=запрос и, если тема или плагин переписывает ссылки, человекопонятный путь. Для индексации опасны оба варианта, но решение лучше строить так, чтобы:
- страница результатов поиска отдавалась пользователю как обычно;
- роботы получали
noindex,follow; - по возможности не создавались лишние дубли в sitemap и навигации;
- внутренние ссылки на поиск не разрастались по всему сайту.
Пошаговое решение без плагина
1. Добавьте noindex на поисковые страницы
Самый надёжный вариант — вывести мета-тег robots только для страниц поиска. Это не мешает пользователю, но подсказывает поисковикам не индексировать такие страницы.
add_action('wp_head', function () {
if (is_search()) {
echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
}
});Если у вас уже стоит SEO-плагин, проверьте, не добавляет ли он свой robots-тег на поиск. Два разных тега с конфликтующими директивами — частая причина странного поведения в индексации.
2. Закройте поиск от индексации через robots.txt только как дополнительный слой
robots.txt полезен, но не заменяет noindex. Его задача — уменьшить обход мусорных URL, а не гарантировать удаление из индекса.
User-agent: *
Disallow: /?s=
Disallow: /search/Этот вариант не универсален для всех серверов и схем URL, поэтому после правки обязательно проверьте, как именно формируется поиск у вас на сайте. Если поиск использует только параметр ?s=, строка Disallow: /search/ может быть лишней.
3. Уберите поисковые страницы из sitemap и внутренних ссылок
Поисковые результаты не должны попадать в карту сайта. Если они там есть, значит, SEO-плагин или кастомный код добавляет лишние URL. В этом случае нужно искать источник генерации sitemap, а не править карту вручную.
Также проверьте шаблоны: иногда в хедере, сайдбаре или хлебных крошках случайно выводится ссылка на страницу поиска с пустым запросом. Такие ссылки не нужны и только плодят дубли.
Если нужен более жёсткий контроль через wp_robots
Начиная с WordPress 5.7, можно использовать фильтр wp_robots. Это аккуратнее, чем печатать тег вручную, потому что WordPress сам соберёт корректный robots-атрибут.
add_filter('wp_robots', function (array $robots) {
if (is_search()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот способ удобен, если тема уже использует wp_robots и вы хотите не дублировать разметку в wp_head. Для большинства проектов это предпочтительнее ручного вывода.
Сравнение подходов
| Способ | Что делает | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Даёт настройку noindex для search-страниц | Быстро, без кода | Зависит от плагина и его логики |
Код через wp_robots | Добавляет noindex,follow только на поиск | Точно и прозрачно | Нужно править тему или mu-plugin |
| robots.txt | Ограничивает обход | Снижает нагрузку | Не гарантирует удаление из индекса |
Как проверить, что решение сработало
Проверка должна быть не на глаз, а по фактам. После внедрения сделайте три шага:
- Откройте страницу поиска в браузере и посмотрите исходный код: должен быть
noindex,follow. - Проверьте заголовки ответа через DevTools или
curl -I, если у вас дополнительно настроенX-Robots-Tag. - В Search Console отправьте проверку URL и посмотрите, как робот видит страницу поиска.
Пример проверки через консоль:
curl -I "https://example.com/?s=test"Если вы используете SEO-плагин, убедитесь, что он не переопределяет ваши правила. Иногда проблема не в коде, а в том, что плагин выставляет index,follow для шаблона поиска по умолчанию.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt, но страницы остались в индексе
Это ожидаемо. Disallow не удаляет уже проиндексированные URL. Добавьте noindex и дождитесь переобхода.
Поставили noindex на весь сайт
Такое случается, когда условие is_search() написано не там или сломана логика шаблона. Проверьте, что код выполняется только на страницах поиска, а не в wp_head без условий.
Сломали поиск редиректом
Если вы отправляете все URL с ?s= на главную, пользователь не получит результаты поиска. Редирект допустим только для пустого запроса или явно мусорных параметров, но не для нормального поиска.
Оставили поисковые URL в sitemap
Даже с noindex это лишний шум. Найдите источник генерации и исключите search-страницы на уровне плагина или фильтра.
Практические советы по безопасности и производительности
Если на сайте много поисковых запросов от ботов, имеет смысл дополнительно ограничить бесполезные обращения к поиску на уровне кеша и логики шаблона. Но не делайте это через агрессивные блокировки без диагностики: иногда поиск используют реальные пользователи, а не только роботы.
- не выводите на странице поиска тяжёлые блоки, которые не помогают пользователю найти результат;
- проверьте, не кэшируется ли страница поиска как обычная статическая страница;
- если у вас есть фильтрация по нескольким параметрам, следите, чтобы поисковые URL не плодили комбинации дублей;
- для крупных сайтов полезно ограничить длину поискового запроса и отбрасывать пустые значения.
Если нужен более широкий набор правок для дублей и технической чистки сайта, в некоторых проектах удобно сочетать ручной код с инструментами вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wp-puzzle.ru&utm_medium=article&utm_campaign=kak-zapretit-indeksaciyu-poiskovykh-stranic-v-wordpress
Главный критерий успеха простой: поисковые страницы остаются рабочими для людей, но перестают быть отдельным индексируемым мусорным слоем. Если после правок в Search Console продолжают появляться старые URL, это обычно вопрос времени переобхода, а не признак того, что решение не работает.