Если в поиске всплывают страницы, которые не должны индексироваться, проблема обычно не в одном месте. Чаще всего мешают сразу три слоя: настройки WordPress, правила в robots.txt и мета-теги noindex. Если закрыть только один слой, поисковик может продолжить видеть URL через внутренние ссылки, карту сайта или старые данные в индексе.
Ниже — рабочая схема для служебных страниц, архивов, результатов поиска по сайту, страниц пагинации и других URL, которые не должны конкурировать с основным контентом.
Какие страницы обычно нужно закрывать от индексации
Не стоит закрывать всё подряд. Для WordPress типичный список выглядит так:
- страницы внутреннего поиска вида
?s=; - архивы автора на небольших сайтах, где один автор;
- архивы дат, если они не несут самостоятельной ценности;
- служебные страницы: вход, регистрация, корзина, спасибо за заказ;
- страницы пагинации в разделах, если они создают шум в индексе;
- теги и таксономии, которые дублируют рубрики или не заполнены контентом.
Если у вас уже есть сильная структура рубрик и тегов, закрывать нужно только те архивы, которые реально дают дубли или пустые страницы. Иначе можно случайно убрать из поиска полезные посадочные.
Диагностика: где именно ломается индексация
Перед правкой проверьте, что именно видит поисковик. Одна и та же страница может быть доступна в HTML, но закрыта в robots.txt или наоборот.
Проверьте исходный код страницы
Откройте проблемный URL и найдите в <head> мета-тег:
<meta name="robots" content="noindex, follow">Если тега нет, страница может индексироваться, даже если в админке включены общие настройки приватности.
Проверьте robots.txt
Файл robots.txt не удаляет URL из индекса сам по себе. Он только ограничивает обход. Если страница уже в индексе, одного Disallow недостаточно.
Пример, который часто встречается на практике:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/Такой вариант помогает сократить обход мусорных URL, но для удаления из индекса нужен ещё noindex или снятие страниц с сайта.
Посмотрите карту сайта
Если URL попал в XML sitemap, поисковик получает сигнал, что страница важна. Поэтому закрытые страницы лучше исключать и из карты сайта, и из внутренней перелинковки.
Пошаговое решение без лишних правок в ядре
Самый безопасный путь — сначала закрыть страницы на уровне мета-тегов, затем убрать их из sitemap и только после этого при необходимости ограничить обход через robots.txt.
Шаг 1. Добавьте noindex для конкретных шаблонов
Если нужно закрыть, например, результаты поиска и архивы автора, можно сделать это через фильтр wp_robots. Он есть в современных версиях WordPress и позволяет менять директивы без ручной правки шаблонов.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() || is_author() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант удобен тем, что не зависит от конкретной темы. Но применять его нужно аккуратно: если на сайте несколько авторов и авторские страницы полезны для SEO, закрывать их не стоит.
Шаг 2. Уберите URL из XML sitemap
Если вы используете SEO-плагин, проверьте настройки индексации таксономий, архивов и типов записей. Если карта сайта генерируется кодом или кастомно, исключайте служебные страницы на уровне источника данных.
Для собственного типа записей можно отключить его попадание в sitemap через аргументы регистрации, если это действительно служебный контент:
<?php
register_post_type( 'docs', array(
'public' => true,
'show_in_rest' => true,
'exclude_from_search' => true,
'publicly_queryable' => true,
'has_archive' => false,
'rewrite' => false,
) );Здесь важно не путать exclude_from_search и индексацию. Первый параметр убирает записи из поиска по сайту, но не гарантирует noindex для поисковиков.
Шаг 3. Ограничьте обход в robots.txt
Если нужно сократить нагрузку на сайт и убрать мусорные URL из обхода, добавьте правила в robots.txt. Для WordPress это можно сделать через фильтр robots_txt:
<?php
add_filter( 'robots_txt', function( string $output, bool $public ) {
$output .= "\nDisallow: /search/";
$output .= "\nDisallow: /?s=";
$output .= "\nDisallow: /author/";
return $output;
}, 10, 2 );Но не добавляйте туда всё подряд. Если закрыть CSS, JS или изображения, можно сломать рендеринг и ухудшить диагностику в поисковых системах.
Когда лучше использовать плагин, а когда код
Если задача типовая и нужна редактору без доступа к коду, удобнее SEO-плагин. Если нужно закрыть только несколько шаблонов или кастомных URL, код надёжнее и прозрачнее.
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Много страниц, нужна настройка через админку | Легко включить лишнее и не заметить конфликт с темой |
| Код в теме или mu-plugin | Точечные правила для конкретных шаблонов | Нужен контроль при обновлении и тестировании |
| Только robots.txt | Снизить обход мусорных URL | Не удаляет уже проиндексированные страницы |
Если сайт обслуживает несколько редакторов, лучше вынести правила в отдельный mu-plugin. Так они не пропадут при смене темы.
Как проверить, что решение сработало
После внедрения не ограничивайтесь просмотром кода страницы. Проверка должна быть в три шага:
- Откройте URL в браузере и убедитесь, что в
<head>появилсяnoindex. - Проверьте, что URL исчез из XML sitemap.
- Посмотрите статус в Google Search Console или другой панели вебмастера: страница должна перейти в состояние, связанное с исключением из индекса, а не продолжать считаться канонической.
Дополнительно можно проверить ответ сервера командой:
curl -I https://example.com/search/?s=testЕсли страница должна закрываться от индексации, но отдаёт обычный HTML без noindex, значит правило не сработало или подключено не в том месте.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt, но не поставили noindex
Это самая частая ошибка. Поисковик может продолжать хранить URL в индексе, потому что запрет на обход не равен удалению из выдачи. Исправление: сначала noindex, потом при необходимости Disallow.
Добавили noindex, но URL остался в sitemap
Такой конфликт создаёт лишний сигнал для поисковика. Исправление: убрать URL из sitemap и из внутренних ссылок, если он не нужен.
Закрыли слишком много архивов
Иногда под раздачу попадают полезные рубрики, которые реально собирают трафик. Исправление: пересмотрите структуру сайта и закройте только пустые или дублирующие архивы.
Положились только на плагин и забыли про тему
Некоторые темы и плагины одновременно добавляют свои мета-теги. В результате можно получить конфликт директив. Исправление: проверьте исходный код страницы и найдите, кто именно выводит robots-мета.
Практические советы по безопасности и производительности
Чем меньше лишних URL индексируется и обходится, тем проще поддерживать сайт. Но не стоит превращать robots.txt в свалку правил.
- не закрывайте ресурсы, нужные для рендеринга страницы;
- не используйте
Disallowкак заменуnoindex; - не добавляйте правила в файл темы, если они должны пережить обновление;
- проверяйте, не создаёт ли плагин SEO дубли мета-тегов;
- после изменений смотрите не только HTML, но и sitemap, и внутренние ссылки.
Если на сайте много технических дублей, иногда удобнее сначала навести порядок в шаблонах и архивных страницах, а уже потом править индексацию. Для этого полезно держать под рукой инструменты, которые умеют чистить дубли и служебные элементы без ручного редактирования каждой страницы, например Clearfy Pro: https://wpshop.ru/plugins/clearfy.
Если хотите, можно пойти дальше и собрать отдельный чек-лист для конкретного типа сайта: блог, корпоративный сайт, каталог или медиа-проект. В каждом случае набор страниц для закрытия будет разным.