Внутренний поиск WordPress часто оставляет в индексе страницы вида ?s=.... Для пользователя это почти всегда бесполезные URL: они дублируют контент, создают тонкие страницы и иногда тянут в индекс мусорные запросы. Если сайт уже живой, такие страницы лучше не просто скрыть, а правильно закрыть от индексации и отдать поисковикам понятный сигнал.
Ниже разберём рабочий сценарий: что именно закрывать, как это сделать кодом в теме или через плагин, как проверить результат и где обычно ломают настройку.
Когда проблема действительно есть
Сначала не трогайте код, а проверьте, что именно индексируется. В Search Console и в логах обхода обычно видно несколько типичных симптомов:
- в индексе есть URL с параметром
?s=; - поиск по сайту отдаёт страницы с почти пустым контентом или одним списком карточек;
- в выдаче появляются десятки вариантов одного и того же запроса с разными параметрами;
- страницы поиска получают переходы из поиска, но не дают нормальной поведенческой ценности.
Если поиск на сайте используется как полноценная навигация, закрывать нужно именно страницы результатов, а не сам поиск как функцию. Это разные вещи.
Что не стоит делать
Неправильный подход — просто запретить всё через robots.txt. Да, это может сократить обход, но не гарантирует удаление уже известных URL из индекса. Для страниц поиска обычно нужен noindex на уровне HTML-ответа, а не только запрет сканирования.
Как закрыть страницы поиска от индексации
Есть три нормальных варианта: через SEO-плагин, через код в теме или через серверную логику в дочерней теме/мини-плагине. Если задача точечная, код часто надёжнее: вы контролируете поведение без лишних настроек и зависимостей.
| Способ | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Если уже используется Yoast, Rank Math или аналог | Быстро и без правки темы | Зависимость от интерфейса плагина |
| Код в теме | Если нужен точный контроль | Прозрачно и предсказуемо | Нужно не забыть про дочернюю тему |
| robots.txt | Как дополнительная мера | Снижает обход | Не решает задачу индексации полностью |
Вариант 1: добавить noindex для страниц поиска
Если вы управляете темой или дочерней темой, можно добавить мета-тег noindex,follow только для результатов поиска. Это не ломает переходы по ссылкам, но просит поисковик не включать страницу в индекс.
add_action( 'wp_head', function () {
if ( is_search() ) {
echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
}
}, 1 );Этот код можно разместить в functions.php дочерней темы или в небольшом mu-plugin. Для продакшена mu-plugin даже удобнее: он не зависит от смены темы.
Вариант 2: убрать поиск из XML-карты и внутренних ссылок
Если тема или плагины генерируют ссылки на страницы поиска в блоках, хлебных крошках или виджетах, их нужно убрать. Иначе поисковик продолжит находить эти URL через внутренние ссылки, даже если вы поставили noindex.
Проверьте:
- виджет поиска в сайдбаре;
- ссылки на результаты поиска в шаблонах;
- автоматические блоки «похожие материалы», если они строятся на поисковых URL;
- XML-карту сайта, если туда попали служебные страницы.
Вариант 3: ограничить мусорные параметры поиска
Иногда проблема не в самом ?s=, а в параметрах, которые добавляют плагины фильтрации или кастомный поиск. Тогда полезно нормализовать URL и не плодить дубли. Если параметр не нужен для индексации, его лучше не оставлять в каноническом адресе.
add_filter( 'get_search_link', function( $link, $search_query ) {
return home_url( '/?s=' . rawurlencode( $search_query ) );
}, 10, 2 );Этот пример не закрывает индексацию сам по себе, но помогает держать единый формат URL. Если у вас уже есть SEO-плагин, проверьте, не конфликтует ли он с каноникалами.
Диагностика: как понять, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой. Откройте несколько URL поиска и посмотрите исходный код страницы. В <head> должен появиться мета-тег noindex,follow.
Дальше проверьте три вещи:
- Страница поиска не получает статус
index,followиз другого плагина. - В HTML нет конфликтующего канонического URL на саму страницу поиска.
- URL с
?s=больше не попадают в новые отчёты индексации после переобхода.
Если у вас есть доступ к Search Console, отправьте страницу на повторную проверку и посмотрите, как поисковик интерпретирует директиву. Иногда индексация уходит не сразу, и это нормально: старые URL могут держаться в отчётах до следующего обхода.
Быстрая проверка через браузер
Откройте страницу поиска и выполните просмотр исходного кода страницы. Ищите строку:
<meta name="robots" content="noindex,follow" />Если её нет, значит код не сработал, либо его перехватывает другой плагин SEO.
Частые ошибки и как их исправить
- Добавили только robots.txt. Это не гарантирует удаление из индекса. Добавьте
noindexв HTML-ответ. - Поставили noindex, но оставили каноникал на главную. Поисковик может трактовать это как конфликт сигналов. Канонический URL должен быть логичным и не подменять смысл страницы.
- Код вставили в родительскую тему. После обновления правка пропадёт. Используйте дочернюю тему или mu-plugin.
- Закрыли не только результаты поиска, но и саму форму поиска. Пользователь должен иметь возможность искать на сайте, даже если результаты не индексируются.
- Смешали настройки нескольких SEO-плагинов. Один плагин может ставить
noindex, другой — переопределять robots meta. Оставьте один источник правды.
Практика безопасности и производительности
Если поиск на сайте публичный и часто используется, он может создавать лишнюю нагрузку. Это особенно заметно на больших каталогах и сайтах с тяжелыми запросами. В таком случае полезно не только закрыть индексацию, но и сократить число бесполезных запросов.
- ограничьте автоподстановку и бесконечные варианты поиска;
- не индексируйте служебные страницы с пустым запросом;
- проверьте, не кешируются ли страницы поиска как обычные архивы;
- не выводите в результатах поиска приватные типы записей, если они не должны быть публичными.
Если у вас уже есть плагин для технической чистки и SEO, например Clearfy Pro, часть таких задач можно закрыть настройками без ручного кода. Но даже в этом случае стоит проверить итоговый HTML, а не полагаться только на галочки в админке.
Что проверить после внедрения
Перед тем как считать задачу закрытой, пройдитесь по чек-листу:
- страницы
?s=отдаютnoindex,follow; - внутренние ссылки на поиск не создают новых дублей;
- в Search Console нет роста новых URL поиска;
- SEO-плагин не переопределяет мета-теги;
- код размещён в дочерней теме или mu-plugin;
- поиск на сайте продолжает работать для пользователей.
Если после правок URL всё равно индексируются, обычно проблема в конфликте настроек или в том, что поисковик ещё не переобошёл страницы. Тогда сначала проверьте исходный HTML, а уже потом ищите более сложные причины.