Страницы внутреннего поиска WordPress часто попадают в индекс как тонкие и почти бесполезные URL: у них мало уникального контента, много дублей по параметрам запроса и нулевая ценность для поиска. Если не закрыть их вовремя, в выдаче начинают копиться мусорные адреса вида ?s=..., а поисковик тратит обход на страницы, которые не должны ранжироваться.
Надёжнее всего решать задачу не одним способом, а на двух уровнях: запретить индексацию самой страницы поиска и одновременно убрать её из обхода там, где это уместно. Для WordPress это обычно делают через noindex, а не только через robots.txt.
Какие страницы поиска WordPress нужно закрывать
В стандартном WordPress результаты поиска открываются по адресу с параметром ?s=. Например, https://site.ru/?s=wordpress. Именно такие URL и нужно исключать из индекса, если вы не хотите видеть их в выдаче.
Есть два типичных варианта:
- обычная страница результатов поиска по сайту;
- страницы поиска с дополнительными параметрами, которые создают ещё больше дублей, например сортировки, фильтры или пагинация поиска, если тема или плагины их добавляют.
Если у вас на сайте есть отдельная страница поиска с красивым адресом, логика та же: закрывать нужно не только сам шаблон, но и все его варианты, которые не несут самостоятельной ценности для пользователя из поиска.
Самый правильный способ: поставить noindex на результаты поиска
Для поисковых систем это самый понятный сигнал. Страница остаётся доступной пользователю, но не должна попадать в индекс. В WordPress это можно сделать на уровне темы или через SEO-плагин, если он умеет управлять мета-тегами robots.
Если вы правите тему, добавьте в functions.php дочерней темы или в собственный мини-плагин такой код:
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Здесь noindex запрещает индексацию страницы, а follow оставляет поисковику возможность переходить по ссылкам на ней. Для страницы результатов поиска это обычно нормальный вариант: сама страница не нужна в выдаче, но ссылки с неё не обязательно блокировать.
Если на сайте уже стоит SEO-плагин, проверьте его настройки для архивов, страниц поиска и служебных типов страниц. Во многих случаях плагин уже умеет ставить noindex на поиск без ручного кода. Это удобнее, чем вносить изменения в тему, особенно если тема обновляется.
Почему одного robots.txt недостаточно
Частая ошибка — закрыть поиск только через robots.txt. Это не гарантирует исключение URL из индекса. Если поисковик уже знает адрес страницы, он может оставить её в выдаче без содержимого или с фрагментом из внешних ссылок.
Для внутренних страниц поиска правильнее использовать связку:
noindexна самой странице;- при необходимости — ограничение обхода через
robots.txt; - убрать ссылки на поиск из тех мест, где они не нужны для индексации.
То есть robots.txt — это вспомогательный инструмент, а не основной способ убрать страницу из индекса.
Когда имеет смысл добавить запрет в robots.txt
Если на сайте много мусорных запросов поиска, которые создают лишнюю нагрузку на обход, можно дополнительно закрыть шаблон поиска в robots.txt. Но делать это стоит аккуратно: сначала убедитесь, что на странице уже стоит noindex.
Для WordPress можно добавить правило такого вида:
User-agent: *
Disallow: /*?s=
Disallow: /search/Первое правило закрывает стандартный поиск с параметром ?s=. Второе пригодится, если у вас есть отдельный URL поиска на красивом адресе, например через тему или плагин. Но конкретный путь зависит от того, как именно реализован поиск на сайте.
У этого способа есть ограничение: если поисковик не может просканировать страницу из-за Disallow, он может не увидеть мета-тег noindex. Поэтому лучше сначала поставить noindex, а уже потом, если нужно, ограничивать обход.
Если нужен более жёсткий вариант: X-Robots-Tag в заголовке
Иногда удобнее отдавать запрет на индексацию не через HTML, а через HTTP-заголовок X-Robots-Tag. Это полезно, если шаблон страницы формируется нестандартно или вы хотите управлять индексацией на уровне сервера.
Для Apache можно добавить правило в .htaccess, если на хостинге разрешён модуль mod_headers:
<IfModule mod_headers.c>
<If "%{QUERY_STRING} =~ /(^|&)s=/">
Header set X-Robots-Tag "noindex, follow"
</If>
</IfModule>Для Nginx это настраивается в конфигурации сервера, а не в .htaccess. Если у вас обычный shared-хостинг, скорее всего, доступ к Nginx-конфигу отсутствует, и тогда проще использовать вариант с wp_head или SEO-плагином.
Этот способ имеет смысл только если вы понимаете, где именно обрабатываются запросы и есть ли у вас доступ к серверной конфигурации. Для большинства сайтов на WordPress он не обязателен.
Как проверить, что страница поиска действительно закрыта
После настройки не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что поисковик видит именно noindex, а не просто пустую страницу.
Проверьте три вещи:
- Откройте страницу поиска в браузере и посмотрите исходный код: в
<head>должен быть<meta name="robots" content="noindex,follow">или аналогичный тег от SEO-плагина. - Убедитесь, что страница доступна без ошибок и не отдаёт редирект на главную без причины.
- Если используете Google Search Console или Яндекс Вебмастер, отправьте URL на повторную проверку после обновления страницы и дождитесь переобхода.
Если страница уже была в индексе, её удаление не происходит мгновенно. После добавления noindex поисковику нужно заново обойти URL, чтобы снять его из выдачи.
Что делать, если поиск уже попал в индекс
Если мусорные URL уже накопились, сначала закройте их от индексации правильным способом, а не удаляйте вслепую. После этого можно ускорить процесс через инструменты вебмастера: отправить страницу на переобход, проверить статус индексации и при необходимости использовать временное удаление URL.
Но временное удаление — это не замена noindex. Если не убрать причину появления страниц поиска, они вернутся в индекс снова.
На практике порядок такой: сначала ставите noindex, затем проверяете, что он реально отдается, и только после этого при необходимости чистите уже проиндексированные адреса через инструменты поисковиков.
Какой способ выбрать в обычном проекте
Если нужен короткий ответ: для WordPress почти всегда достаточно закрыть страницу поиска через noindex. Это самый безопасный и предсказуемый вариант.
| Способ | Когда использовать | Комментарий |
|---|---|---|
noindex в HTML | Почти всегда | Основной способ убрать страницу поиска из индекса |
robots.txt | Дополнительно, если нужно сократить обход | Не заменяет noindex |
X-Robots-Tag | Если нужен серверный контроль | Подходит при доступе к конфигурации сервера |
Если у вас обычный сайт на WordPress без сложной серверной логики, не усложняйте решение. Поставьте noindex на поиск, проверьте исходный код и убедитесь, что поисковик больше не индексирует эти страницы. Этого обычно достаточно, чтобы убрать тонкие внутренние URL и не плодить мусор в выдаче.