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