Страницы внутреннего поиска WordPress часто создают мусор в индексе: запросы с параметрами, пустые выдачи, дубли с разными URL и слабый поведенческий сигнал. На небольшом сайте это выглядит как мелочь, но на практике такие страницы быстро расползаются по индексации, особенно если поиск активно используют посетители и боты.
Задача здесь не в том, чтобы отключить поиск, а в том, чтобы оставить его рабочим для пользователей и одновременно не отдавать поисковикам страницы вида ?s=... и их вариации.
Как понять, что проблема именно в страницах поиска
Сначала проверьте, действительно ли в индексе есть мусор от поиска. Самый быстрый способ — поиск по сайту в Google с оператором site:ваш-домен.ru inurl:?s=. Если в выдаче всплывают URL с параметром поиска, значит страницы уже попали в индекс или регулярно туда попадают.
Второй признак — в отчетах Search Console появляются URL с параметром s, а в логах сервера заметны частые запросы к поиску от ботов. Часто это сопровождается пустыми страницами, где заголовок есть, а контент почти отсутствует.
Что именно нужно проверить
- есть ли в индексе URL вида
/?s=запрос; - открываются ли страницы поиска с кодом 200;
- не создаются ли отдельные архивы для одинаковых запросов с разным регистром и кодировкой;
- не генерирует ли тема отдельные шаблоны поиска без
noindex; - не закрыт ли поиск слишком грубо через
robots.txt, если он нужен пользователям.
Важно: robots.txt сам по себе не убирает уже проиндексированные URL. Он только ограничивает обход. Если страница уже в индексе, нужен либо noindex, либо корректный каноникал, либо редирект в зависимости от сценария.
Какие есть варианты решения
Для WordPress обычно используют три подхода: плагин для SEO, правку темы через wp_head и более жесткий вариант через редирект или noindex на уровне шаблона. Выбор зависит от того, нужен ли поиск как функция и насколько у вас кастомная тема.
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Если уже стоит Yoast, Rank Math или аналог | Быстро и без правки темы | Зависит от настроек плагина и его шаблонов |
| Код в теме или mu-plugin | Если нужен точный контроль | Не зависит от интерфейса плагина | Нужно аккуратно тестировать обновления |
| Редирект с пустого поиска | Если пустые запросы создают мусор | Убирает бесполезные URL | Нельзя применять ко всем поисковым страницам без разбора |
Пошаговое решение через код
Если вам нужен предсказуемый результат без лишней зависимости от SEO-плагина, добавьте noindex,follow для страниц поиска. Это оставит ссылки доступными для обхода, но не будет просить поисковик индексировать саму страницу выдачи.
Лучше поместить код в mu-plugin или в дочернюю тему, если вы уверены, что тема не меняется часто. Для production-сайта это надежнее, чем править родительскую тему.
<?php
/**
* Plugin Name: Noindex for search results
*/
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});
Этот вариант работает в большинстве стандартных тем. Но если у вас уже подключен SEO-плагин, проверьте, не выводит ли он свой собственный meta robots. Два разных тега с конфликтующими значениями — частая причина странного поведения.
Если нужно убрать пустые поисковые страницы
Когда пользователь или бот открывает пустой запрос, можно отправлять его на главную или на страницу поиска с нормальным запросом. Но не делайте это для всех поисковых страниц подряд: реальный поиск по сайту должен оставаться доступным.
<?php
add_action('template_redirect', function () {
if (!is_search()) {
return;
}
$query = get_search_query(false);
if (trim($query) === '') {
wp_safe_redirect(home_url('/'), 302);
exit;
}
});
Здесь используется временный редирект 302, потому что пустой поиск — это не постоянная новая страница. Если вы поставите 301, поисковики могут закрепить редирект как постоянный, и потом будет сложнее менять логику.
Если у вас уже стоит SEO-плагин
В Yoast, Rank Math и похожих плагинах обычно есть настройка для noindex на страницах поиска. Это нормальный путь, если вы не хотите держать собственный код. Но проверяйте итоговый HTML, а не только галочку в админке.
После изменения настроек откройте страницу поиска в браузере и посмотрите исходный код. В <head> должен быть только один корректный robots-мета-тег. Если плагин добавляет canonical, он должен вести на саму страницу поиска или на релевантную страницу, а не на случайный архив.
Проверка результата после внедрения
Сделайте проверку в три шага. Без этого легко решить, что все работает, хотя страница по-прежнему индексируется.
- Откройте URL поиска вручную, например
/?s=тест, и убедитесь, что в исходном коде естьnoindex,follow. - Проверьте заголовки ответа и код страницы через DevTools или
curl. - В Search Console отправьте страницу на повторную проверку и отследите, как меняется статус индексации.
Пример проверки через консоль:
curl -I 'https://example.com/?s=test'
Если вы используете код с wp_head, в ответе должен быть обычный 200 OK, но с мета-тегом noindex в HTML. Если вы сделали редирект для пустого поиска, проверьте, что он срабатывает только на пустой запрос и не ломает обычный поиск.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt и на этом остановились
Это не решает проблему уже проиндексированных URL. Если страница уже в выдаче, добавьте noindex или настройте редирект для пустых запросов, а robots.txt используйте только как дополнительный слой.
Поставили noindex на все страницы с параметрами
Иногда вместе с поиском случайно закрывают фильтры, сортировки и полезные URL. Если у вас есть важные страницы с параметрами, проверьте логику шаблона и не применяйте правило слишком широко.
Сделали 301 на главную для любого поиска
Это ломает внутренний поиск. Пользователь ищет материал, а вместо результата попадает на главную. Если нужно убрать только мусорные запросы, фильтруйте именно пустые или заведомо некорректные значения.
Не проверили конфликт с SEO-плагином
Когда одновременно работает тема, кастомный код и SEO-плагин, легко получить два разных meta robots или несовместимый canonical. Откройте исходный код и убедитесь, что итоговый HTML содержит одну понятную инструкцию для поисковика.
Что еще стоит сделать для чистоты индекса
Если на сайте уже есть проблемы с дублями, имеет смысл посмотреть шире, чем только поиск. Часто рядом всплывают архивы тегов без контента, служебные страницы, пагинация с тонким содержимым и старые URL после смены структуры.
- уберите из индекса служебные страницы, которые не несут ценности;
- проверьте canonical на шаблонах архива и поиска;
- не плодите одинаковые страницы с разными параметрами;
- следите, чтобы поиск не создавал бесконечные комбинации URL;
- после правок обновите sitemap, если он включает лишние URL.
Если нужен более широкий технический аудит дублей и служебных страниц, в WordPress-проектах часто используют Clearfy Pro для чистки типовых SEO-ошибок и лишних элементов. Но даже с плагином все равно нужно проверять итоговый HTML и индексацию вручную: автоматические настройки не заменяют контроль результата.
Как понять, что решение сработало
Признаки нормального результата простые: страницы поиска доступны пользователю, но не получают новых показов в индексе; в исходном коде есть noindex,follow; в Search Console снижается количество URL с параметром s; в выдаче перестают появляться мусорные поисковые страницы.
Если через несколько недель старые URL все еще висят в индексе, это не обязательно ошибка. Поисковику нужно время, чтобы переобойти и переоценить страницу. Главное — чтобы новые поисковые URL больше не накапливались.