Страницы внутреннего поиска WordPress часто попадают в индекс как отдельные URL с параметром ?s=. Для SEO это обычно лишний шум: такие страницы создают дубли, расходуют crawl budget и могут тянуть в индекс пустые или почти пустые результаты. При этом сам поиск на сайте должен продолжать работать для пользователей.
Когда проблема действительно есть
Сначала проверьте, что именно индексируется. В поиске Google или Яндекса можно найти запросы вида site:example.com inurl:?s= или site:example.com inurl:/?s=. Если в выдаче есть страницы поиска, откройте несколько URL и посмотрите, что на них реально показывается: результаты, пустая выдача, служебные страницы, страницы с низкой ценностью.
Типичный сценарий выглядит так:
- поиск доступен по адресу
/?s=запрос; - в индексе оказываются URL с разными поисковыми фразами;
- часть страниц возвращает мало контента или вообще пустой результат;
- в отчётах по индексации растёт число «мусорных» URL.
Что не стоит делать
Не закрывайте поиск через robots.txt как единственный метод. Если бот не сможет зайти на страницу, он не увидит мета-тег noindex, а URL может остаться в индексе как «запрещённый к сканированию». Для таких страниц надёжнее использовать noindex на самих страницах поиска и, при необходимости, ограничить их появление в sitemap.
Рабочая схема: закрыть поиск от индексации, но оставить его для пользователей
Есть три практических варианта: через SEO-плагин, через код в теме или через комбинацию обоих подходов. Если на сайте уже стоит SEO-плагин, сначала проверьте его настройки. Если нет — проще и чище добавить точечный код.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если уже используется Yoast, Rank Math или аналог | Без кода, удобно для редактора | Зависит от конкретного плагина и его настроек |
| Код в теме/плагине | Если нужен контролируемый и лёгкий вариант | Не добавляет лишнюю логику, работает предсказуемо | Нужно аккуратно вносить изменения |
| Комбинированно | Если есть и SEO-плагин, и нестандартная разметка | Можно закрыть и поиск, и связанные архивы | Риск конфликтов, если дублировать правила |
Вариант через код: добавить noindex на страницы поиска
Если у вас обычный поиск WordPress по параметру s, можно добавить мета-тег noindex,follow только на поисковые результаты. Это не ломает поиск, но подсказывает роботам не индексировать такие страницы.
<?php
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);
Код можно добавить в дочернюю тему или в небольшой функциональный плагин. Если у вас уже есть SEO-плагин, проверьте, не выводит ли он свой robots meta на search-страницах. Два разных тега с противоречивыми значениями лучше не оставлять.
Вариант через фильтр robots meta в SEO-плагине
Если сайт использует Yoast SEO, у него есть фильтр wpseo_robots. Через него можно точечно задать правило для поисковых страниц:
<?php
add_filter('wpseo_robots', function ($robots) {
if (is_search()) {
return 'noindex,follow';
}
return $robots;
});
Этот вариант удобен, если вы не хотите вмешиваться в шаблоны темы. Но он имеет смысл только тогда, когда Yoast действительно установлен и активен.
Если нужен более жёсткий контроль: убрать search-URL из sitemap и внутренних ссылок
Одного noindex обычно достаточно. Но если на сайте много внутренних ссылок на страницы поиска, лучше проверить, откуда они берутся. Часто это:
- виджет поиска в шапке или сайдбаре;
- кастомные ссылки в меню;
- шаблоны, которые выводят поисковую выдачу как обычную страницу;
- плагины, создающие отдельные search-архивы или фильтры.
Если поисковые URL попадают в sitemap через сторонний плагин, их нужно исключить на уровне этого плагина. В стандартном WordPress обычные search-страницы в sitemap не попадают, но кастомные решения встречаются часто.
Проверка после внедрения
После изменений не ограничивайтесь просмотром исходника главной страницы. Проверьте именно поисковый URL, например /?s=test.
- Откройте страницу поиска в браузере.
- Посмотрите исходный код и убедитесь, что есть
<meta name="robots" content="noindex,follow" />. - Проверьте HTTP-заголовки, если у вас есть серверная логика, которая может добавлять
X-Robots-Tag. - В Search Console отправьте URL на проверку и посмотрите, как робот видит страницу.
Для быстрой проверки заголовков можно использовать curl:
curl -I "https://example.com/?s=test"
Если вы добавляли X-Robots-Tag на уровне сервера или плагина безопасности, в ответе должен быть виден соответствующий заголовок. Если используете только meta robots, в заголовках его не будет — это нормально.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt и на этом остановились
Это самая частая ошибка. Робот может не сканировать страницу, но URL всё равно иногда остаётся в индексе как найденный по ссылкам. Добавьте noindex на саму страницу поиска.
Поставили noindex на все страницы сайта
Иногда в шаблоне по ошибке используют слишком общий условный тег или вставляют мета-тег без проверки is_search(). В результате поисковики перестают индексировать и обычные страницы. Убедитесь, что условие срабатывает только на search-результатах.
Дублируют правила SEO-плагин и тема
Если Yoast или Rank Math уже выводит robots meta, а вы добавили ещё один тег вручную, можно получить конфликт. Оставьте один источник правды: либо настройка плагина, либо код.
Путают поиск по сайту и фильтры каталога
На некоторых проектах под «поиском» понимают ещё и фильтры, сортировки, параметры в URL. Для них нужны отдельные правила: где-то noindex, где-то каноникал, а где-то вообще блокировка индексации через настройки плагина. Не переносите решение для /?s= на все параметры без проверки.
Безопасность и производительность
Закрытие search-страниц от индексации не ускоряет сайт само по себе, но помогает уменьшить количество бесполезных обходов. Это особенно заметно на проектах с большим количеством контента и активным внутренним поиском. Если на сайте есть тяжёлые поисковые запросы, отдельно проверьте, не создаёт ли поиск лишнюю нагрузку на базу данных.
Полезно также:
- ограничить вывод пустых результатов и страниц с нулевой ценностью;
- не индексировать служебные параметры, если они не нужны в поиске;
- следить, чтобы поиск не генерировал бесконечные комбинации URL;
- проверять, не попадают ли search-URL в карты сайта через сторонние плагины.
Если на сайте уже используется Clearfy Pro, часть задач по чистке дублей и технической оптимизации можно закрыть через его настройки, но всё равно стоит проверить итоговый HTML и индексацию вручную: автоматические настройки не всегда совпадают с логикой конкретного проекта.
Короткий чек-лист перед публикацией
- Проверили, что индексируются именно страницы
/?s=, а не обычные записи. - Добавили
noindex,followтолько на search-страницы. - Убедились, что нет второго конфликтующего robots meta.
- Проверили исходный код и ответ сервера на тестовом запросе.
- Посмотрели, не попадают ли search-URL в sitemap и внутренние ссылки.
Если после внедрения страницы поиска всё ещё появляются в индексе, обычно проблема не в самом noindex, а в том, что правило не применяется ко всем шаблонам поиска или на сайте есть альтернативный URL для результатов, который закрыт не полностью. В таком случае нужно искать конкретный шаблон или плагин, который генерирует эти страницы.