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