Внутренний поиск WordPress часто попадает в индекс не потому, что сайт «плохой», а потому что поисковые роботы видят отдельные URL с параметрами вроде ?s=. В результате в выдаче могут появляться пустые или почти пустые страницы поиска, дубли и мусорные URL. Это особенно заметно на контентных сайтах, где поиск генерирует много однотипных страниц.
Задача здесь не в том, чтобы отключить поиск для посетителей, а в том, чтобы убрать его страницы из индекса и не мешать краулингу нормальных материалов. Ниже — рабочие варианты: от простого noindex до более аккуратной настройки через код и проверку в Search Console.
Когда проблема действительно есть
Сначала стоит убедиться, что речь именно о страницах поиска, а не о каком-то другом типе дублей. Типичный признак — в индексе появляются URL вида / ?s=ключевое+слово или /search/..., если тема или плагин меняют формат поиска. Такие страницы обычно не несут самостоятельной ценности и могут отъедать краулинговый бюджет.
Как быстро диагностировать
Проверьте три вещи:
- в поиске Google запрос
site:example.com inurl:?s=илиsite:example.com inurl:search; - отчёт «Страницы» в Google Search Console — есть ли URL поиска в разделе про индексирование;
- исходный код страницы поиска — есть ли
noindexили каноникал на саму страницу поиска.
Если страницы поиска уже индексируются, а в коде нет явного запрета, это и есть точка входа для исправления.
Что лучше: плагин, код или robots.txt
Для этой задачи часто пытаются использовать robots.txt, но это не лучший первый шаг. Запрет в robots.txt мешает обходу, но не гарантирует удаление URL из индекса, если они уже известны поисковику. Для страниц поиска обычно нужен именно noindex.
| Подход | Когда подходит | Минус |
|---|---|---|
| Плагин SEO/очистки | Если нужен быстрый и безопасный способ без правки темы | Зависимость от настроек плагина |
| Код в теме или mu-plugin | Если нужен точный контроль и минимум лишней логики | Нужно аккуратно тестировать после обновлений |
robots.txt | Как дополнительная мера, если нужно снизить обход | Не решает вопрос индексации сам по себе |
Если у вас уже стоит SEO-плагин, сначала проверьте его настройки. Если нет — проще и надёжнее добавить небольшой фрагмент кода, чем городить отдельную логику в шаблоне.
Пошаговое решение через код
Самый предсказуемый вариант — добавить noindex,follow для страниц поиска. Это оставляет ссылки доступными для обхода, но просит поисковики не индексировать саму страницу поиска.
Вариант для functions.php или mu-plugin
add_action( 'wp_head', function () {
if ( is_search() ) {
echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
}
}, 1 );Этот вариант работает на уровне фронтенда и подходит, если тема не выводит собственный robots-tag. Но если у вас уже есть SEO-плагин, который управляет мета-тегами, лучше не дублировать noindex из двух мест.
Более аккуратный вариант через фильтр robots meta
Если тема или плагин уже используют стандартные фильтры, лучше подключиться к ним. В WordPress есть фильтр wp_robots, через который можно добавить директивы без ручного вывода тега.
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Такой способ предпочтительнее, если вы не хотите вмешиваться в разметку <head>. Он лучше сочетается с современными темами и плагинами, которые тоже используют wp_robots.
Если нужен запрет ещё и на обход
Иногда дополнительно ограничивают обход страниц поиска в robots.txt. Это уместно как вспомогательная мера, но не как единственная защита от индексации.
User-agent: *
Disallow: /?s=
Disallow: /search/Здесь важно понимать ограничение: правила в robots.txt не всегда интерпретируются одинаково для URL с параметрами. Если у вас поиск живёт на параметре ?s=, поисковик может всё равно увидеть такие URL через внутренние ссылки или внешние упоминания. Поэтому сначала ставьте noindex, а robots.txt используйте как дополнительный слой.
Проверка результата после внедрения
После правки не стоит сразу ждать мгновенного исчезновения URL из выдачи. Сначала проверьте, что страница поиска отдаёт нужные сигналы для робота.
- Откройте страницу поиска в браузере и посмотрите исходный код: должен быть
noindex,follow. - Проверьте ответ сервера для URL поиска через
curlили инструменты разработчика. - В Google Search Console отправьте URL на повторную проверку, если он уже был в индексе.
- Убедитесь, что обычный поиск для пользователей продолжает работать.
Пример проверки через консоль:
curl -I "https://example.com/?s=test"В ответе вы не увидите noindex, потому что это мета-тег, а не заголовок. Поэтому отдельно смотрите HTML-исходник страницы. Если используете SEO-плагин, проверьте, не конфликтует ли он с вашим кодом и не перезаписывает ли robots-мета.
Частые ошибки и как их исправить
Ставят только запрет в robots.txt
Это частая ошибка. Если URL уже известен поисковику, одного Disallow недостаточно. Исправление простое: добавьте noindex и оставьте robots.txt как вторичную меру.
Закрывают поиск через nofollow
nofollow на странице поиска не решает задачу индексации. Он влияет на передачу сигналов по ссылкам, но не запрещает индексировать саму страницу. Для поиска нужен именно noindex.
Дублируют настройку в нескольких местах
Если SEO-плагин уже ставит noindex, а вы добавляете ещё один мета-тег вручную, можно получить конфликт или некорректную разметку. Проверьте исходный код и оставьте один источник правды.
Закрывают не только поиск, но и полезные архивы
Иногда под горячую руку попадают страницы, которые должны индексироваться: рубрики, теги или нормальные посадочные. Не переносите логику с поиска на все архивы без проверки.
Практические советы по безопасности и производительности
Если поиск на сайте активно используется, стоит ещё посмотреть на нагрузку. Встроенный поиск WordPress не всегда хорошо работает на больших базах, особенно если запросы сложные и часто повторяются. Но отключать его ради индексации не нужно — достаточно убрать мусорные URL из выдачи и следить за качеством шаблона результатов.
- не выводите на странице поиска слишком тяжёлые блоки, которые не нужны для результата;
- не добавляйте в шаблон поиска лишние запросы к базе на каждый просмотр;
- если используете SEO-плагин, проверьте, не создаёт ли он отдельные архивы поиска;
- при большом объёме контента рассмотрите улучшение поиска, но отдельно от задачи индексации.
Если нужен быстрый способ почистить дубли, мета-данные и технические хвосты на сайте, иногда удобнее подключить специализированный плагин вроде Clearfy Pro, но только если его настройки действительно закрывают вашу задачу и не конфликтуют с текущим SEO-стеком.
Как понять, что всё сработало
Признаки правильной настройки довольно конкретные: в исходном коде страницы поиска есть noindex,follow, в Search Console новые URL поиска не накапливаются в индексе, а старые постепенно выпадают после переобхода. При этом поиск на сайте остаётся доступным для пользователей и не ломает навигацию.
Если после правки страницы поиска всё ещё индексируются, обычно проблема в одном из трёх мест: код не попал в активную тему, SEO-плагин перезаписывает мета-теги или поисковик ещё не переобходил URL. В таком случае сначала проверяйте исходный код, потом конфигурацию плагинов, и только потом ждите обновления индекса.