Страницы результатов поиска WordPress часто попадают в индекс как отдельные URL с пустым или слабым содержимым. Для поисковика это типичный мусор: один и тот же шаблон, разные запросы, мало полезного контента и много дублей. При этом сам внутренний поиск на сайте должен продолжать работать для посетителей. Эти две задачи не конфликтуют, если закрывать именно страницы выдачи поиска, а не отключать сам поиск.
Правильная цель здесь простая: оставить форму поиска и обработку запросов для пользователей, но запретить индексировать URL вида ?s=запрос или их ЧПУ-аналоги, если тема их использует. Делается это через мета-тег robots, HTTP-заголовок или настройки SEO-плагина. Ниже — рабочие варианты и то, как проверить, что поиск не сломался.
Что именно нужно закрывать от индексации
В WordPress поиск обычно открывается по адресу с параметром s, например https://example.com/?s=wordpress. На некоторых сайтах тема или плагин может делать красивый URL для поиска, но суть не меняется: это страница выдачи результатов, а не обычная статическая страница.
Индексировать такие адреса обычно не нужно, потому что они:
- создают большое число почти одинаковых URL;
- часто показывают мало полезного текста;
- могут возвращать пустую выдачу по редким запросам;
- засоряют отчёты в Search Console и усложняют анализ сайта.
При этом закрывать нужно именно страницы результатов поиска, а не саму функцию поиска. Пользователь по-прежнему должен вводить запрос и получать результаты на сайте.
Самый надёжный способ: добавить noindex на страницы поиска
Если у вас установлен SEO-плагин, это обычно самый безопасный путь. Он не ломает поиск и не требует ручного редактирования шаблонов. Для WordPress важно, чтобы на страницах поиска был тег <meta name="robots" content="noindex,follow"> или эквивалентная директива.
noindex запрещает добавлять страницу в индекс, а follow оставляет поисковым роботам возможность переходить по ссылкам на странице. Для страниц поиска это нормальная комбинация: сама выдача не нужна в поиске, но ссылки внутри неё не должны быть искусственно обрублены.
Если вы используете плагин SEO-оптимизации, ищите настройку для архивов, результатов поиска или специальных страниц. Названия в интерфейсе могут отличаться, но смысл один: запретить индексирование search results. После сохранения проверьте исходный код страницы поиска и убедитесь, что там появился noindex.
Если нужен точечный контроль, добавьте правило в тему или мини-плагин
Когда SEO-плагина нет или вы хотите задать поведение вручную, можно вывести robots-мета для страниц поиска через хук wp_head. Это рабочий вариант для любой актуальной версии WordPress, если тема корректно вызывает wp_head() в шаблоне.
Код лучше добавить в дочернюю тему или в небольшой собственный плагин, а не в основной файл темы. Так настройка не потеряется после обновления.
<?php
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
} );Этот фрагмент проверяет, открыта ли страница поиска, и добавляет нужный мета-тег только для неё. Для обычных страниц сайта ничего не меняется.
Если у вас уже есть SEO-плагин, не дублируйте директивы без необходимости. Два разных источника, которые одновременно пишут robots-мета, могут создать путаницу. В идеале должен быть один ответственный механизм.
Когда лучше использовать HTTP-заголовок X-Robots-Tag
Иногда удобнее закрывать страницы поиска не через HTML, а через HTTP-заголовок X-Robots-Tag. Это полезно, если вы хотите управлять индексацией на уровне сервера или если шаблон страницы сложно править. Но для обычного сайта WordPress это скорее запасной вариант, чем основной.
Заголовок подходит, если нужно закрыть от индексации не только HTML-страницу поиска, но и другие ответы, которые отдаются без полноценного шаблона. Однако настройка зависит от веб-сервера и хостинга: на Apache это обычно делают через .htaccess или конфигурацию виртуального хоста, на Nginx — через правила в конфиге сервера. Если доступа к серверной конфигурации нет, этот способ может быть недоступен.
Для большинства владельцев сайтов проще и надёжнее использовать noindex в HTML, потому что он не требует вмешательства в серверную часть.
Что не нужно делать, если внутренний поиск должен остаться рабочим
Самая частая ошибка — закрыть поиск через robots.txt. Это плохая идея, если вы хотите именно убрать страницы из индекса. Запрет в robots.txt мешает роботам сканировать URL, но не гарантирует удаление уже проиндексированных страниц. Более того, поисковик может видеть адрес, но не получать содержимое, и тогда управление индексацией становится менее предсказуемым.
Ещё одна ошибка — ставить редирект с поисковых URL на главную страницу или на какую-то общую категорию. Это ломает логику поиска для пользователей и создаёт странное поведение: человек вводит запрос, а вместо результатов попадает не туда, куда ожидал.
Не стоит и отключать сам параметр s в WordPress, если поиск нужен на сайте. Этот параметр — штатный механизм ядра WordPress, и его блокировка обычно приводит к тому, что форма поиска перестаёт работать или начинает отдавать пустые страницы.
Как проверить, что страницы поиска закрыты, а поиск работает
После настройки откройте любую страницу поиска на сайте, например через форму поиска в шапке. Проверьте три вещи.
- Страница результатов открывается и показывает найденные записи.
- В исходном коде страницы есть
noindexв robots-мета или заголовокX-Robots-Tagс нужным значением. - Ссылки внутри сайта по-прежнему ведут на рабочую форму поиска и не ломают навигацию.
Если используете браузерные инструменты разработчика, можно посмотреть HTML-исходник и убедиться, что директива добавляется только на страницах поиска. На обычных страницах сайта её быть не должно.
Для дополнительной проверки откройте Search Console и посмотрите, как поисковик видит URL с параметром s. Если страница ещё в индексе, удаление не происходит мгновенно: поисковой системе нужно переобойти адрес и увидеть новую директиву. Это нормальный процесс, особенно если URL уже давно были в выдаче.
Что выбрать на практике
| Способ | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если он уже установлен и умеет управлять robots для поиска | Быстро, без кода, удобно поддерживать | Зависит от конкретного плагина и его настроек |
Код через wp_head | Если нужен точечный контроль без SEO-плагина | Просто, прозрачно, работает на уровне темы | Нужно аккуратно добавить код и не потерять его при смене темы |
X-Robots-Tag | Если есть доступ к серверной конфигурации и нужен серверный контроль | Работает без правок шаблона | Зависит от хостинга и веб-сервера |
Если задача обычная, я бы начинал с SEO-плагина или с небольшого фрагмента в теме. Этого достаточно в большинстве проектов WordPress. Серверный заголовок имеет смысл только тогда, когда вы уже управляете конфигурацией сервера и понимаете, зачем он нужен именно в вашем случае.
В итоге схема простая: страницы поиска закрываем от индексации, но сам поиск не трогаем. Тогда сайт не плодит мусорные URL, а пользователи продолжают пользоваться внутренним поиском без ограничений.