Страницы поиска в WordPress часто попадают в индекс как тонкие и бесполезные URL: пользователь вводит запрос, получает выдачу, а поисковик видит ещё одну страницу с почти пустым или дублирующимся контентом. Если таких страниц много, они начинают шуметь в отчётах по индексации и размывают качество сайта.
Задача здесь не в том, чтобы отключить поиск как функцию, а в том, чтобы правильно отдать поисковым роботам сигнал: страницу можно использовать пользователю, но индексировать её не нужно.
Когда проблема действительно есть
Сначала стоит убедиться, что речь именно о страницах поиска, а не о других URL с параметром ?s=. В WordPress стандартный поиск обычно выглядит так: / ?s=запрос или в ЧПУ-варианте с темой и плагинами — похожим образом, но с тем же параметром s.
Типичные симптомы
- в отчёте Google Search Console появляются URL с
?s=; - в индексе есть страницы поиска без полезного трафика;
- по запросу в поиске находятся страницы вида «Результаты поиска по запросу…»;
- внутренний поиск работает, но SEO-страницы дублируются по разным запросам.
Если у вас в индексе не только поиск, но и страницы тегов, авторов или вложений, это отдельная задача. Здесь разбираем именно поиск.
Что лучше использовать: noindex, robots.txt или редирект
Для страниц поиска обычно не нужен редирект. Пользователь должен иметь возможность искать по сайту, а поисковик — не индексировать результаты поиска как отдельные посадочные страницы.
| Подход | Когда подходит | Минус |
|---|---|---|
noindex, follow | Страница нужна пользователю, но не должна попадать в индекс | Нужно корректно вывести мета-тег или заголовок |
| robots.txt | Как дополнительный сигнал для обхода | Не гарантирует удаление уже проиндексированных URL |
| Редирект | Если поиск на сайте вообще не нужен | Ломает сценарий поиска для пользователей |
Практически всегда рабочая схема такая: noindex, follow на страницах поиска плюс при необходимости ограничение обхода через robots.txt. Этого достаточно, чтобы не ломать поведение сайта.
Пошаговое решение через код темы или мини-плагин
Самый надёжный способ — добавить мета-тег robots только для поисковых страниц. Это не зависит от SEO-плагина и работает предсказуемо.
1. Добавьте noindex для результатов поиска
Вставьте код в functions.php дочерней темы или в свой мини-плагин:
add_action('wp_head', function () {
if (is_search()) {
echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
}
}, 1);Этот вариант простой и понятный. Он не трогает обычные страницы сайта и срабатывает только на результатах поиска.
2. Если SEO-плагин уже управляет robots, не дублируйте правила
Если у вас установлен Yoast SEO, Rank Math или другой SEO-плагин, проверьте, не добавляет ли он уже noindex для поиска. Дублировать мета-теги не нужно: поисковик обычно разберётся, но в коде получится путаница, а в некоторых конфигурациях — конфликт сигналов.
Логика простая: либо вы управляете robots через SEO-плагин, либо через код. Два источника правды для одного и того же URL обычно только мешают.
3. При необходимости ограничьте обход в robots.txt
Если сайт генерирует много мусорных поисковых URL, можно дополнительно подсказать роботам не обходить их. Но это именно дополнительная мера, а не замена noindex.
User-agent: *
Disallow: /?s=
Disallow: /search/С Disallow нужно быть аккуратнее: если страница уже в индексе, robots.txt сам по себе её не уберёт. Он только ограничит обход. Поэтому сначала убедитесь, что на странице есть noindex, а уже потом при необходимости добавляйте запрет на обход.
Если нужен вариант без кода
Иногда задача решается через SEO-плагин или набор оптимизаций в одном месте. Например, в Clearfy Pro есть инструменты для чистки лишних элементов и управления техническими сигналами сайта. Это удобно, если вы не хотите держать отдельные правки в теме и предпочитаете централизованную настройку. Подробности можно посмотреть на странице плагина: Clearfy Pro.
Но даже если используете плагин, всё равно проверьте итоговый HTML страницы поиска. Важно не название настройки, а фактический результат в коде.
Как проверить, что решение сработало
Проверка занимает несколько минут и должна быть обязательной. Иначе легко получить ситуацию, когда настройка включена в админке, но на фронтенде ничего не изменилось.
- Откройте страницу поиска на сайте, например
/?s=test. - Посмотрите исходный код страницы и найдите
meta name="robots". - Убедитесь, что значение содержит
noindex,follow. - Проверьте, не выводит ли SEO-плагин второй, конфликтующий robots-тег.
- Если страница уже была в индексе, отправьте её на переобход через Search Console и дождитесь обновления статуса.
Дополнительно можно проверить HTTP-заголовки, если вы настраивали их на уровне сервера или кэширующего слоя. Но для обычного WordPress достаточно проверки HTML-кода.
Частые ошибки и как их исправить
1. Закрыли поиск в robots.txt, но не поставили noindex
Это самая частая ошибка. Страница может остаться в индексе как URL без контента, если на неё уже есть внешние или внутренние ссылки. Исправление: вернуть доступ для обхода и добавить noindex,follow в HTML.
2. Поставили noindex только на одну версию URL
Например, закрыли /?s=, но не учли альтернативный маршрут, который формирует тема или плагин. Исправление: проверьте, как именно генерируется поиск на вашем сайте, и тестируйте реальные URL из адресной строки.
3. Конфликт с SEO-плагином
Если плагин уже выводит свои мета-теги, а вы добавили ещё один вручную, в коде появляется дублирование. Исправление: оставьте один источник управления robots и уберите второй.
4. Слишком агрессивный Disallow
Иногда в robots.txt закрывают не только поиск, но и полезные разделы сайта по шаблону. Это уже может повлиять на обход страниц. Исправление: ограничивайте только точный путь или параметр, который действительно создаёт проблему.
Чек-лист перед публикацией правки
- Проверен реальный URL поиска на сайте.
- В исходном коде есть
noindex,follow. - Нет второго конфликтующего robots-тега.
- robots.txt не закрывает полезные разделы сайта.
- Поиск по сайту продолжает работать для пользователей.
- Страница отправлена на переобход, если уже была в индексе.
Безопасность и производительность
Правка для поиска сама по себе лёгкая, но лучше не вносить её напрямую в родительскую тему. Если тема обновится, изменение потеряется. Для кода используйте дочернюю тему или маленький плагин под конкретную задачу.
Если на сайте уже много технических правок, держите их в одном месте и документируйте, что именно делает каждая из них. Это сильно упрощает диагностику, когда через месяц появляется конфликт с кэшем, SEO-плагином или кастомной темой.
И ещё один практический момент: если поиск на сайте используется редко и создаёт много мусора, иногда полезнее улучшить сам механизм поиска — например, ограничить поиск только по заголовкам или исключить служебные типы записей. Но это уже отдельная задача, и её стоит решать после того, как вы убрали индексирование поисковых URL.