Страница внутреннего поиска WordPress часто попадает в индекс не потому, что это полезно, а потому что поисковик видит множество URL с параметрами ?s=. В результате в выдаче появляются пустые или почти пустые страницы, а в отчётах по индексации растёт мусор. Если на сайте много контента, это быстро превращается в проблему: дубли, лишняя нагрузка и размывание краулингового бюджета.
Ниже — рабочие способы закрыть поиск от индексации: через robots.txt, через мета-тег noindex, через код темы или плагина. Разберём, что именно выбрать, как проверить результат и где чаще всего ошибаются.
Когда проблема действительно есть
Сначала стоит убедиться, что поисковик индексирует именно страницы поиска, а не просто показывает их в отчёте как обнаруженные URL. Откройте в Google Search Console раздел с индексированием и посмотрите, есть ли там адреса вида /?s=запрос или /page/2/?s=. Если такие URL уже попали в индекс, одной правки robots.txt обычно недостаточно: робот может перестать заходить на страницу, но уже известный URL не всегда быстро выпадет из выдачи.
Типичные признаки
- в поиске находятся страницы вида
site:example.com ?s=; - в Search Console растёт число URL с параметром
s; - на сайте много внутренних ссылок на поиск, особенно в теме или виджетах;
- поисковая выдача показывает пустые страницы поиска вместо полезных материалов.
Что лучше: robots.txt, noindex или код
У каждого способа свой эффект. Если нужен быстрый и безопасный контроль, лучше ставить noindex на саму страницу поиска. Если задача — ещё и не тратить краулинговый бюджет на обход таких URL, можно дополнительно закрыть их в robots.txt. Но полагаться только на Disallow рискованно: URL может остаться в индексе без возможности переобхода и удаления мета-данных.
| Способ | Плюс | Минус | Когда использовать |
|---|---|---|---|
noindex | Надёжно убирает страницу из индекса | Нужно, чтобы робот мог зайти на страницу | Основной вариант |
robots.txt | Снижает обход лишних URL | Не гарантирует удаление из индекса | Как дополнение |
| Плагин SEO | Быстро без кода | Зависит от настроек и темы | Если уже используете SEO-плагин |
Пошаговое решение через код
Если нужен предсказуемый результат и вы не хотите зависеть от настроек темы, проще всего добавить noindex, follow для страницы поиска. Это можно сделать в дочерней теме или через небольшой mu-plugin. Такой подход не трогает остальные страницы и не требует правки шаблонов вручную.
Вариант 1: добавить meta robots для поиска
<?php
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Этот код выводит мета-тег только на страницах поиска. Для большинства сайтов этого достаточно: поисковик видит страницу, понимает, что индексировать её не нужно, и при этом может переходить по ссылкам дальше.
Вариант 2: добавить X-Robots-Tag через заголовок
Если вы хотите управлять индексацией на уровне ответа сервера, можно отправлять заголовок X-Robots-Tag. Это полезно, когда шаблон страницы нестабилен или вы не доверяете выводу <head> в теме.
<?php
add_action('template_redirect', function () {
if (is_search() && !headers_sent()) {
header('X-Robots-Tag: noindex, follow', true);
}
});Заголовок и мета-тег лучше не дублировать без необходимости. Обычно хватает одного способа. Если используете SEO-плагин, проверьте, не ставит ли он свой noindex автоматически, чтобы не плодить конфликтующие правила.
Как закрыть поиск через robots.txt
Этот вариант полезен как дополнительная мера, но не как единственная. Для WordPress поиск обычно живёт на URL с параметром s, поэтому можно ограничить обход таких адресов. Однако если страница уже в индексе, одного Disallow мало: поисковик может продолжать показывать URL без описания.
User-agent: *
Disallow: /*?s=
Disallow: /search/
Синтаксис зависит от того, как именно у вас формируются URL поиска. На стандартном WordPress чаще встречается параметр ?s=. Если тема или плагин создают красивый путь вроде /search/, добавьте и его. После правки проверьте, что файл robots.txt реально отдается сайтом, а не подменяется кэшем или виртуальным файлом плагина.
Если используете SEO-плагин
Во многих случаях проще закрыть поиск в настройках SEO-плагина, если он уже стоит на сайте. Это удобно, когда не хочется трогать код и нужно централизованно управлять мета-данными. Но важно проверить, что плагин действительно применяет правило к страницам поиска, а не только к архивам или таксономиям.
Если у вас есть Clearfy Pro, его имеет смысл рассматривать как инструмент для технической чистки сайта: он помогает убирать дубли и лишние элементы, но всё равно нужно проверить итоговый HTML и ответы сервера. Не стоит считать, что одна галочка автоматически решает вопрос во всех темах и конфигурациях.
Проверка результата после внедрения
После изменения не ограничивайтесь просмотром страницы в браузере. Нужно проверить именно то, что видит робот.
- Откройте URL поиска, например
https://example.com/?s=test. - Посмотрите исходный код страницы и убедитесь, что есть
noindex,followили заголовокX-Robots-Tag. - Проверьте ответ сервера через DevTools,
curlили любой HTTP checker. - В Search Console отправьте URL на повторную проверку, если он уже был в индексе.
Пример проверки через curl:
curl -I "https://example.com/?s=test"В ответе ищите строку вида X-Robots-Tag: noindex, follow. Если вы ставили только мета-тег, откройте HTML и убедитесь, что он выводится именно на странице поиска, а не на всех страницах сайта.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt, но не поставили noindex
Это самая частая ошибка. URL перестаёт обходиться, но уже известная страница может остаться в индексе. Исправление простое: добавьте noindex на саму страницу поиска и оставьте robots.txt только как дополнительную меру.
Поставили noindex не на тот шаблон
Иногда разработчик добавляет правило в шаблон архива или в header.php без проверки условия. В итоге noindex получают все страницы сайта. Проверяйте, что используется именно is_search(), а не общий фрагмент без условий.
Конфликт с SEO-плагином
Если SEO-плагин уже управляет robots-мета-тегами, ручной код может дублировать или перезаписывать его настройки. В таком случае оставьте один источник правды: либо настройка в плагине, либо код в теме/му-плагине.
Сломали кэширование
После правки страницы поиска иногда продолжают отдавать старые заголовки из кэша. Очистите серверный кэш, кэш плагина и CDN, если он есть. Иначе вы увидите старый результат и решите, что код не работает.
Что ещё стоит проверить на сайте
Если внутренний поиск уже попал в индекс, обычно проблема не ограничивается одной страницей. Стоит посмотреть, не создаёт ли тема лишние архивы, дубли пагинации или пустые страницы результатов. Иногда полезнее не только закрыть поиск, но и сократить количество бесполезных URL в целом.
- проверить, не индексируются ли URL с параметрами;
- убедиться, что поиск не доступен в sitemap;
- посмотреть, не создаёт ли тема отдельный шаблон поиска с лишними блоками;
- очистить кэш после изменений;
- запросить переобход в Search Console для уже проиндексированных URL.
Если нужен более широкий аудит технических дублей и мусорных страниц, имеет смысл смотреть на сайт как на систему: поиск, архивы, пагинацию, теги, страницы автора и служебные URL. Тогда решение будет не точечным, а устойчивым.