Внутренний поиск WordPress часто создаёт мусорные URL: страницы с параметром ?s=, пустые результаты, дубли с пагинацией и запросы, которые не несут ценности для поиска. Если такие страницы попадают в индекс, они начинают конкурировать с нормальными посадочными, раздувают отчёты в Search Console и иногда тянут за собой лишнюю нагрузку на сервер.
Задача здесь не в том, чтобы «сломать поиск», а в том, чтобы оставить его рабочим для пользователей и одновременно убрать из индекса технические страницы выдачи. Ниже — рабочая схема для обычного WordPress-сайта: что проверить, что именно закрывать, как это сделать кодом и как убедиться, что всё сработало.
Что именно создаёт проблему
Страница поиска в WordPress обычно выглядит как /?s=запрос. Для пользователя это нормально, но для поисковика такие страницы часто бесполезны. Проблема усиливается, если сайт:
- показывает одинаковые результаты для близких запросов;
- генерирует пустые страницы поиска;
- имеет пагинацию внутри поиска;
- не отдаёт корректный
noindexилиcanonical; - позволяет индексировать внутренние служебные параметры.
Если у вас уже есть статьи про дубли архивов и тегов, то внутренний поиск — следующий логичный шаг. Это отдельный источник мусорных страниц, и закрывать его нужно отдельно.
Диагностика: как понять, что проблема есть
Сначала проверьте, действительно ли поисковые URL попадают в индекс или создают лишнюю нагрузку. Не надо сразу ставить плагин или править шаблон вслепую.
Что смотреть в первую очередь
- Отчёт Страницы в Google Search Console: есть ли URL с
?s=или похожими параметрами. - Результат поиска по сайту через
site:example.com inurl:?s=— это не идеальный метод, но быстрый индикатор. - Логи сервера: много ли запросов к поиску от ботов.
- Код ответа страницы поиска: должен быть
200для пользователя, но при этом страница должна быть закрыта от индексации.
Если поиск отдаёт пустую страницу, но при этом в индексе уже есть URL, значит проблема не только в метатеге. В таких случаях лучше проверить и robots, и canonical, и шаблон выдачи.
Как закрыть поиск от индексации: рабочие варианты
Есть три практических подхода: через SEO-плагин, через код в теме или через комбинацию обоих. Если на сайте уже стоит плагин, который умеет управлять метатегами, это самый простой путь. Если нужен контроль без лишних зависимостей — лучше сделать это кодом.
| Подход | Плюсы | Минусы |
|---|---|---|
| SEO-плагин | Быстро, без правки темы | Зависимость от интерфейса и настроек |
| Код в теме или мини-плагине | Точный контроль, не зависит от обновлений SEO-плагина | Нужно аккуратно тестировать |
robots.txt только | Просто добавить | Не гарантирует удаление уже проиндексированных URL |
Вариант 1: закрыть поиск через код
Если хотите управлять этим на уровне темы или собственного плагина, добавьте noindex, follow для страниц поиска и корректный canonical на саму страницу поиска без лишних параметров.
<?php
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);
add_filter('wp_get_canonical_url', function ($canonical) {
if (is_search()) {
$search_query = get_search_query(false);
$base = home_url('/');
if ($search_query !== '') {
return add_query_arg('s', rawurlencode($search_query), $base);
}
return add_query_arg('s', '', $base);
}
return $canonical;
});Этот вариант подходит, если у вас нет конфликта с SEO-плагином. Если плагин уже сам выводит robots-метатеги, не дублируйте их в шаблоне — получите кашу в <head>.
Вариант 2: закрыть поисковую выдачу через robots.txt
Это полезно как дополнительный слой, но не как единственная мера. Поисковик может уже знать URL, и тогда одного запрета в robots будет мало. Тем не менее для снижения обхода это работает.
User-agent: *
Disallow: /*?s=
Disallow: /search/
Если у вас нестандартные правила ЧПУ или поиск вынесен на отдельный путь, подставьте свой шаблон. Но не закрывайте слишком широко, иначе можно случайно задеть полезные страницы.
Вариант 3: использовать SEO-плагин
Если сайт уже работает на плагине для SEO, проверьте, умеет ли он ставить noindex для страниц поиска. Это удобнее, чем городить отдельный код, но важно понять, где именно плагин выводит метатеги и не конфликтует ли он с темой.
Практический смысл такой: если в проекте уже есть единая точка управления метаданными, используйте её. Если нет — мини-плагин или код в functions.php обычно надёжнее, чем правка шаблона вручную.
Пошаговое решение без лишних рисков
- Проверьте, как сейчас выглядит HTML страницы поиска: есть ли
meta robotsи canonical. - Убедитесь, что поиск возвращает
200 OK, а не редирект на главную или ошибку. - Добавьте
noindex,followтолько дляis_search(). - Проверьте canonical: он должен указывать на саму страницу поиска, а не на случайную категорию или главную.
- Если нужно, добавьте ограничение в
robots.txtкак дополнительную меру. - Переобойдите страницу в Search Console и отправьте её на повторную проверку.
Как проверить, что решение сработало
После внедрения откройте несколько URL поиска вручную и проверьте исходный код страницы. В <head> должен появиться метатег noindex,follow. Затем проверьте canonical и убедитесь, что он не указывает на другой раздел.
Дальше используйте такой чек-лист:
- страница поиска открывается для пользователя;
- в HTML есть
<meta name="robots" content="noindex,follow" />; - canonical не уводит на главную или на нерелевантную страницу;
- в Search Console URL больше не растёт в индексе;
- в логах уменьшается число бессмысленных обходов поисковых URL.
Если страница всё ещё индексируется, обычно причина одна из двух: метатег не выводится на всех шаблонах или URL уже давно в индексе и поисковику нужно время на переобход.
Частые ошибки и как их исправить
Ставят noindex только в robots.txt
Это распространённая ошибка. robots.txt помогает ограничить обход, но не гарантирует удаление уже известных URL из индекса. Нужен именно метатег noindex на странице.
Закрывают слишком широкий шаблон
Например, пишут условие не только для is_search(), но и для всех архивов или всех страниц с параметрами. В итоге ломают индексацию нормальных страниц. Проверяйте условие точечно.
Конфликтуют два источника метатегов
Если SEO-плагин уже выводит robots-метатеги, а тема добавляет свои, поисковик может получить противоречивые сигналы. Оставьте один источник правды.
Canonical указывает не туда
Иногда canonical на поисковой странице ставят на главную. Это выглядит как попытка «склеить» всё подряд, но на практике создаёт путаницу. Для поиска canonical должен быть предсказуемым и не уводить пользователя в другой контекст.
Что делать с пустыми результатами поиска
Если запрос ничего не нашёл, не надо превращать страницу в тонкую заглушку без смысла. Лучше оставить нормальный ответ пользователю, но не давать такой странице индексироваться. Для пустых результатов полезно:
- показать подсказку с альтернативными запросами;
- дать ссылки на популярные разделы;
- не подменять пустой поиск редиректом на главную без причины;
- не генерировать отдельные индексируемые страницы для каждого пустого запроса.
Если сайт большой, имеет смысл дополнительно ограничить количество запросов к поиску через кеширование, но это уже отдельная задача. Для небольших сайтов достаточно корректного noindex и нормального шаблона выдачи.
Практические советы по безопасности и производительности
Поиск часто используют боты и сканеры, поэтому не стоит делать его слишком тяжёлым. Если шаблон выдачи строит сложные запросы, проверьте, не создаёт ли он лишнюю нагрузку на базу данных. На уровне кода избегайте необязательных JOIN и тяжёлых фильтров в поиске, если они не нужны.
Ещё один полезный момент: не выводите в поисковой выдаче лишние приватные поля, черновики и служебные записи. Если в теме или плагине есть кастомизация поиска, убедитесь, что она не раскрывает контент, который не должен быть доступен публично.
Если нужен более широкий набор инструментов для технической чистки сайта, дублирования метаданных и контроля индексации, иногда проще собрать это в одном месте, чем держать набор разрозненных сниппетов. В таких случаях уместно смотреть в сторону решений уровня Clearfy Pro, если он уже используется в проекте и не конфликтует с текущим стеком.
Главное правило простое: поисковая страница должна быть полезной пользователю, но не обязана участвовать в поисковой выдаче. Если это разделить технически, сайт становится чище, а индексация — предсказуемее.