Страницы внутреннего поиска в WordPress часто попадают в индекс не потому, что они полезны, а потому что их легко обнаружить роботам. В результате в поиске могут появляться URL вида /search/... или ?s=... с пустыми, дублирующими и слабоценными результатами. Для сайта это обычно лишний шум: расход краулингового бюджета, мусорные сниппеты и путаница в отчётах Search Console.
Ниже — рабочий сценарий: как найти источник проблемы, закрыть страницы поиска от индексации, не сломать сам поиск на сайте и проверить, что всё действительно сработало.
Когда страницы поиска нужно закрывать от индексации
Не каждый сайт обязан прятать внутренний поиск, но в большинстве проектов это разумно. Особенно если поиск генерирует много URL с параметрами, а сами результаты зависят от запроса пользователя и не несут самостоятельной ценности для внешнего поиска.
Типичные признаки проблемы
- в индексе есть URL с параметром
?s=или с путём поиска; - в отчётах поисковых систем растёт число страниц с низкой ценностью;
- по запросу в выдаче показываются внутренние страницы поиска вместо целевых материалов;
- на сайте есть несколько форм поиска, и каждая создаёт свой вариант URL;
- результаты поиска доступны без ограничений и могут содержать тонкие дубли.
Диагностика: что именно индексируется
Сначала стоит понять, какой формат URL использует ваш сайт. В WordPress встречаются два основных варианта: стандартный параметр ?s=запрос и ЧПУ-формат, который формируется темой или плагином. Если вы закроете только один вариант, второй может продолжить попадать в индекс.
Проверьте несколько вещей вручную:
- откройте поиск на сайте и посмотрите адрес в браузере;
- проверьте исходный код страницы поиска на наличие
meta robots; - посмотрите, не добавляет ли SEO-плагин свои правила для поиска;
- проверьте, нет ли в
robots.txtзапрета, который конфликтует с мета-тегами.
Если сайт уже в индексе, найдите несколько реальных URL поиска через оператор site: или через отчёт по страницам в панели вебмастера. Это поможет понять, нужно ли закрывать только поиск, или ещё и страницы пагинации результатов.
Что лучше: robots.txt, meta robots или код темы
Для внутреннего поиска чаще всего достаточно noindex на самих страницах результатов. Полный запрет в robots.txt не всегда лучший вариант: если робот не может зайти на страницу, он не увидит мета-тег noindex. Поэтому для уже доступных страниц поиска обычно безопаснее использовать именно noindex, follow или noindex, nofollow в зависимости от логики проекта.
| Подход | Когда уместен | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если нужен быстрый и управляемый вариант | Меньше кода, проще поддержка | Зависимость от настроек плагина |
| Код в теме или mu-plugin | Если нужен точечный контроль | Предсказуемое поведение, без лишних модулей | Нужно аккуратно тестировать после обновлений |
robots.txt | Для грубого ограничения обхода | Просто добавить правило | Не заменяет noindex для уже известных URL |
Пошаговое решение через код
Если вы хотите закрыть именно страницы поиска WordPress, а не весь сайт целиком, удобнее добавить небольшую функцию в functions.php дочерней темы или в собственный mu-plugin. Ниже пример, который добавляет noindex, follow на страницы поиска и при этом не вмешивается в обычные записи и страницы.
<?php
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex, follow" />' . "\n";
}
}, 1);
Если у вас уже подключён SEO-плагин, проверьте, не выводит ли он свой мета-тег robots. Два разных тега на одной странице — частая причина некорректной интерпретации. В таком случае лучше оставить один источник управления.
Для более жёсткого варианта можно добавить заголовок X-Robots-Tag только на поисковые страницы. Это полезно, если HTML-шаблон сложно контролировать или тема переопределяет head.
<?php
add_action('template_redirect', function () {
if (is_search() && !headers_sent()) {
header('X-Robots-Tag: noindex, follow', true);
}
});
Этот вариант не отменяет необходимость проверить, как именно поисковики читают страницу. Но он помогает, если HTML-код генерируется несколькими слоями и вы не хотите править шаблон.
Если поиск работает через нестандартный шаблон
Некоторые темы и плагины выводят результаты поиска не через стандартный шаблон search.php, а через отдельные страницы, AJAX-обновление или кастомный роут. Тогда одного is_search() может быть недостаточно. В таком случае ориентируйтесь на реальный запрос и на шаблон, который отрабатывает в браузере.
Проверить это можно так: откройте страницу поиска, посмотрите, есть ли в адресе s, и сравните исходный HTML с тем, что отдаёт сервер. Если результаты подгружаются JavaScript-ом, закрывать нужно именно канонический URL, а не только визуальный контейнер.
Проверка результата после внедрения
После правки не ограничивайтесь просмотром страницы в браузере. Нужно убедиться, что поисковый робот видит нужные сигналы.
- Откройте страницу поиска и проверьте исходный код: должен быть
noindex. - Проверьте заголовки ответа через DevTools или
curl -I, если использовалиX-Robots-Tag. - Убедитесь, что обычные страницы сайта не получили случайный
noindex. - Проверьте несколько вариантов поиска: пустой запрос, запрос с редкими символами, запрос с пагинацией.
- Если используете Search Console, отправьте URL на повторную проверку после переобхода.
Пример быстрой проверки заголовков через консоль:
curl -I "https://example.com/?s=test"
В ответе должен быть либо заголовок X-Robots-Tag: noindex, follow, либо в HTML страницы должен присутствовать мета-тег robots с тем же смыслом.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt и забыли про noindex
Это одна из самых распространённых ошибок. Если робот не может зайти на страницу, он не увидит мета-тег noindex. В результате URL может ещё долго висеть в индексе как «запрещённый к обходу», особенно если он уже известен поисковой системе.
Поставили noindex на все страницы сайта
Такое случается, когда условие написано слишком широко. Например, используют не is_search(), а более общий шаблон или неверную проверку в хукe. После этого из индекса могут выпасть и обычные страницы. Исправление простое: ограничить условие только поиском и проверить, что код не срабатывает на главной, архиве и записях.
Оставили два разных источника управления
Если SEO-плагин уже добавляет robots-мета, а тема — свой, поисковик может получить противоречивые сигналы. Лучше выбрать один источник: либо плагин, либо код. Для точечной настройки код обычно надёжнее, если вы контролируете шаблон.
Закрыли URL, но не учли канонический адрес
Иногда страница поиска доступна и по ?s=, и по красивому URL. Тогда нужно проверить, какой вариант считается основным, и закрыть именно его. Иначе один адрес будет закрыт, а второй продолжит индексироваться.
Чек-лист перед публикацией правки
- Проверен реальный формат URL поиска на сайте.
- Добавлен только один источник robots-правил.
- Обычные страницы не получили
noindex. - Проверены результаты поиска с пагинацией.
- Проверены заголовки ответа и исходный HTML.
- После изменения запланирована повторная проверка в панели вебмастера.
Практические советы по безопасности и производительности
Если внутренний поиск активно используется, не стоит превращать его в тяжёлую точку входа. Ограничьте количество результатов, следите за запросами с пустыми или слишком короткими строками и не давайте поиску генерировать бесконечные комбинации URL. Это снижает нагрузку и уменьшает количество мусорных страниц.
Если сайт большой, полезно дополнительно проверить, не создаёт ли поиск дубли по пагинации или сортировке. Иногда проблема не в самом поиске, а в том, что каждая вариация запроса индексируется как отдельная страница. В таких случаях помогает не только noindex, но и аккуратная настройка канонических URL на уровне темы или SEO-плагина.
Для сайтов, где нужно быстро убрать дубли и технические страницы, иногда удобнее использовать специализированные инструменты вроде Clearfy Pro, если он уже есть в стеке проекта. Но даже в этом случае полезно понимать, что именно делает плагин, и не полагаться на «автоматически всё исправит».