Страницы внутреннего поиска в WordPress часто создают мусорный индекс: один и тот же шаблон, десятки пустых или слабых результатов, параметры в URL и бесконечные комбинации запросов. Для SEO это обычно не полезные посадочные страницы, а технический шум. При этом полностью ломать поиск на сайте не нужно — задача в том, чтобы убрать такие URL из индекса, но оставить их рабочими для пользователей.
Ниже — рабочие варианты для типовой установки WordPress: через код, через плагин и через проверку результата в Search Console. Разберёмся, когда достаточно noindex, а когда лучше ещё и ограничить обход таких страниц.
Когда страницы поиска действительно стоит закрывать
Речь о URL вида /?s=запрос или их ЧПУ-вариантах, если тема или плагин поиска их генерирует. Проблема не в самом поиске, а в том, что поисковики могут находить и индексировать множество почти пустых страниц с разными запросами. Особенно это заметно на сайтах с:
- маленьким каталогом контента;
- поиском по коротким или однословным запросам;
- автодополнением и параметрами сортировки в URL;
- внутренним поиском, который возвращает мало релевантных результатов.
Если у вас поиск используется только как сервис для посетителей, а не как отдельный SEO-объект, закрытие от индексации обычно оправдано.
Диагностика: какие именно URL попали в индекс
Сначала проверьте, что именно индексируется. Не надо закрывать всё подряд вслепую. Посмотрите:
- URL поиска в отчёте Google Search Console;
- страницы с параметром
?s=в логах или аналитике; - исходный код шаблона поиска: есть ли уже
noindexили canonical; - не генерирует ли тема отдельный архив поиска с ЧПУ.
Быстрый ручной тест: откройте поиск на сайте, выполните запрос и посмотрите HTML-код страницы. Если в <head> уже есть <meta name="robots" content="index,follow"> или ничего не указано, поисковик может индексировать такие страницы по своему усмотрению.
Что должно насторожить
- в индексе есть страницы поиска с пустыми или нерелевантными результатами;
- один и тот же запрос доступен по нескольким URL;
- поиск отдаёт 200 OK даже для бессмысленных запросов;
- в sitemap случайно попадают поисковые URL.
Пошаговое решение через код
Самый предсказуемый вариант — добавить noindex,follow для страниц поиска. Это не запрещает обход ссылок на странице, но просит не включать сам URL в индекс.
Добавьте код в functions.php дочерней темы или в собственный мини-плагин:
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1 );Если хотите сделать это чуть аккуратнее и не печатать мета-тег вручную, можно использовать фильтр wp_robots в современных версиях WordPress:
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Второй вариант предпочтительнее: WordPress сам соберёт корректный robots-мета-тег, а вы не будете дублировать разметку, если тема уже что-то выводит в <head>.
Если нужен запрет обхода через robots.txt
Это отдельная мера, и она не заменяет noindex. Закрытие в robots.txt может уменьшить обход, но не гарантирует удаление URL из индекса, если на него уже есть ссылки. Используйте его осторожно, только если понимаете, зачем это нужно.
User-agent: *
Disallow: /*?s=
Disallow: /search/Такой подход уместен, если у вас есть отдельный поисковый путь /search/ и вы точно знаете, что он не должен обходиться роботами. Но для большинства сайтов достаточно noindex,follow на уровне HTML.
Сравнение подходов
| Способ | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
Код через wp_robots | Точно, без лишних плагинов | Нужен доступ к теме или плагину | Если есть разработчик или доступ к коду |
| Плагин для SEO/чистки | Быстро, без правки файлов | Может дублировать настройки темы | Если нужно внедрить без разработки |
robots.txt | Снижает обход | Не гарантирует удаление из индекса | Как дополнительная мера, не вместо noindex |
Если используете плагин
Если на сайте уже стоит SEO-плагин, проверьте, умеет ли он задавать noindex для поисковых страниц без костылей. Важно не включать сразу несколько механизмов, которые делают одно и то же: тема может печатать мета-тег, плагин — ещё один, а в итоге получится конфликт или дублирование.
Если нужен более широкий контроль над техническими дублями, чисткой служебных страниц и SEO-настройками, это обычно удобнее делать в одном месте, а не разносить по теме и нескольким плагинам. Например, в Clearfy Pro есть набор инструментов для технической чистки сайта: https://wpshop.ru/plugins/clearfy.
Проверка результата после внедрения
После изменения не ограничивайтесь просмотром исходника. Проверьте несколько уровней:
- Откройте страницу поиска в браузере и убедитесь, что в
<head>появилсяnoindex,follow. - Проверьте исходный код страницы через
view-source:или инструменты разработчика. - Посмотрите HTTP-ответ: страница должна оставаться доступной для пользователя и возвращать обычный
200 OK. - В Google Search Console отправьте URL на повторную проверку, если он уже был в индексе.
Если хотите быстро проверить мета-роботы из консоли, можно использовать такой запрос:
curl -s https://example.com/?s=test | grep -i robotsДля локальной проверки этого достаточно, чтобы увидеть, выводится ли нужная директива. Если сайт отдаёт кэшированную версию, после изменения очистите кэш плагина, сервера и CDN.
Частые ошибки и как их исправить
1. Закрыли поиск в robots.txt, но не поставили noindex
Это частая ошибка. Если URL уже известен поисковику, один только Disallow не всегда убирает его из индекса. Добавьте noindex,follow на саму страницу поиска.
2. Поставили noindex на все страницы сайта
Такое бывает, если условие написано слишком широко или фильтр подключён не там. Проверьте, что используется именно is_search(), а не общий шаблон для архивов или всех страниц.
3. Конфликт темы и SEO-плагина
Если тема уже выводит robots-мета-тег, а плагин добавляет свой, поисковик увидит лишнюю разметку. Оставьте один источник правды: либо код в теме, либо настройку в плагине.
4. Кэш не обновился
После правки код может быть правильным, но в браузере или на CDN ещё висит старая версия. Очистите кэш на всех уровнях и проверьте страницу в режиме инкогнито.
5. Закрыли поиск, но оставили его в sitemap
Если поисковые URL каким-то образом попали в карту сайта, их нужно убрать отдельно. noindex и sitemap — разные механизмы, и один не отменяет другой.
Практические советы по безопасности и производительности
Если поиск на сайте активно используется, не ограничивайтесь только SEO-настройкой. Проверьте, не создаёт ли он лишнюю нагрузку:
- не кешируйте страницы поиска слишком агрессивно, если результаты зависят от пользователя или фильтров;
- не выводите в поиск лишние типы записей, если они не нужны;
- ограничьте индексацию служебных параметров в URL;
- не публикуйте в поисковой выдаче приватные или внутренние материалы.
Для сайтов с большим количеством технических страниц полезно держать под контролем не только поиск, но и другие служебные URL: архивы автора, теги, параметры сортировки, страницы вложений. Иначе вы решите одну проблему, а индекс продолжит разрастаться в другом месте.
Если задача выходит за рамки одной правки, лучше собрать все технические правила в одном месте и документировать, что именно закрыто, где и почему. Это экономит время при следующем обновлении темы или смене SEO-плагина.