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