Если в индексе оказываются служебные страницы, страницы поиска, тестовые шаблоны или внутренние разделы, которые не должны ранжироваться, обычно проблема не в одном теге, а в том, что закрытие сделано слишком грубо или в неправильном месте. Для таких случаев удобнее управлять индексацией точечно: через noindex в мета-теге, через заголовок X-Robots-Tag или через настройки SEO-плагина там, где это действительно поддерживается.
Ниже разберём, как понять, что именно у вас попало в индекс, чем отличается закрытие страницы от удаления из индекса, и как внедрить решение без побочных эффектов для каноникализации и обхода сайта поисковыми роботами.
Когда нужен noindex, а когда достаточно canonical
Эти механизмы решают разные задачи. canonical говорит поисковику, какая версия страницы основная. noindex прямо запрещает индексацию конкретного URL. Если страница полезна пользователю, но имеет несколько технических дублей, чаще достаточно canonical. Если же URL не должен появляться в поиске вообще, нужен именно noindex.
Типичные сценарии для WordPress:
- страницы внутреннего поиска с параметрами;
- служебные шаблоны и тестовые страницы;
- архивы, которые не нужны в выдаче, но должны открываться пользователю;
- страницы с временным или приватным контентом;
- результаты фильтров и сортировок, если они создают отдельные URL.
Диагностика: что именно уже индексируется
Перед правкой проверьте, что поисковик видит на странице сейчас. Не стоит ставить noindex «на всякий случай» на весь тип записей, если проблема только в нескольких URL.
Что смотреть в первую очередь
- исходный код страницы: есть ли
<meta name="robots" content="noindex">; - HTTP-заголовки ответа: не отдается ли
X-Robots-Tag: noindex; - канонический URL: не указывает ли он на другую страницу;
- статус ответа: страница должна отдавать
200 OK, если вы хотите, чтобы пользователь её открывал; - наличие в sitemap: если URL не должен индексироваться, его лучше убрать и из карты сайта.
Проверить заголовки можно так:
curl -I https://example.com/technical-page/Если в ответе есть X-Robots-Tag: noindex, поисковик получит запрет даже без мета-тега в HTML. Это полезно для PDF, файлов и страниц, где HTML-метку поставить неудобно.
Пошаговое решение для отдельных страниц
Самый безопасный путь — закрывать не весь сайт, а конкретные шаблоны, типы записей или отдельные URL. В WordPress это можно сделать кодом, если SEO-плагин не даёт нужной гибкости.
Вариант 1: добавить noindex в HTML для выбранных страниц
Если нужно закрыть конкретную страницу по ID или по условию, можно вывести мета-тег через wp_head. Такой способ подходит для обычных HTML-страниц, которые должны открываться пользователю, но не попадать в индекс.
<?php
add_action( 'wp_head', function () {
if ( is_page( array( 123, 456 ) ) ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
} );Здесь follow оставляет роботам возможность переходить по ссылкам на странице. Это не гарантирует передачу веса в конкретном виде, но обычно лучше, чем полностью блокировать обход.
Вариант 2: отдать X-Robots-Tag через заголовок
Если нужно закрыть не только HTML-страницу, но и файл или нестандартный endpoint, удобнее использовать заголовок. В WordPress это можно сделать на уровне PHP, если запрос уже распознан.
<?php
add_action( 'template_redirect', function () {
if ( is_page( 'private-docs' ) ) {
header( 'X-Robots-Tag: noindex, nofollow', true );
}
} );Важно не отправлять заголовок слишком поздно, когда вывод уже начался. Если в теме или плагине есть ранний вывод, заголовок может не сработать. В таком случае проверьте, нет ли echo до вызова header().
Вариант 3: использовать SEO-плагин там, где он уже управляет мета-тегами
Если на сайте уже стоит SEO-плагин, не дублируйте логику кодом и настройками одновременно. Иначе можно получить конфликт: один слой ставит noindex, другой перезаписывает canonical, третий добавляет страницу в sitemap.
Практически это выглядит так: в настройках типа записи или конкретной страницы отключаете индексацию, проверяете итоговый HTML и не добавляете второй источник правил в functions.php.
| Подход | Когда использовать | Минус |
|---|---|---|
| SEO-плагин | Если нужно управлять индексацией без кода | Меньше гибкости для точечных условий |
| Код в теме/плагине | Если условие зависит от ID, шаблона или роли | Нужно следить за обновлениями и тестами |
| X-Robots-Tag | Для файлов, нестандартных ответов и отдельных URL | Сложнее отлаживать без проверки заголовков |
Как не сломать sitemap и внутреннюю перелинковку
Одна из частых ошибок — закрыть страницу от индексации, но оставить её в XML-карте сайта и в навигации. В результате робот продолжает регулярно обходить URL, а в отчётах Search Console страница может висеть как обнаруженная, но не проиндексированная.
Если URL не должен индексироваться, проверьте три точки:
- убран ли он из sitemap;
- не ведут ли на него массово внутренние ссылки;
- не создаёт ли он дубли через параметры, сортировку или пагинацию.
Для массовых случаев лучше закрывать не отдельные URL, а целый шаблон или тип страницы. Например, страницы поиска, архивы по меткам или технические страницы лучше обрабатывать на уровне шаблона, а не вручную.
Проверка результата после внедрения
После изменений не ограничивайтесь просмотром страницы в браузере. Нужно проверить именно то, что увидит робот.
Минимальный чек-лист
- страница отдаёт
200 OK, если она должна быть доступна пользователю; - в HTML есть
noindexили в ответе естьX-Robots-Tag; - canonical не указывает на случайный URL;
- страница исчезла из sitemap, если она не должна индексироваться;
- внутренние ссылки на неё не создают лишний шум в навигации.
Проверить HTML можно через просмотр исходника или через curl:
curl -s https://example.com/private-docs/ | grep -i robotsДля заголовков:
curl -I https://example.com/private-docs/ | grep -i robotsЕсли используете Google Search Console, запросите повторную проверку URL после того, как убедились, что метка действительно отдается. Иначе можно долго ждать, пока робот сам переобойдёт страницу.
Частые ошибки и как их исправить
Страница закрыта, но всё равно индексируется
Обычно причина в том, что noindex стоит только в одной версии страницы, а в индексе — другая: с параметром, со слешем, с http/https или с www/без www. Проверьте все варианты URL и канонический адрес.
Поставили noindex и одновременно закрыли в robots.txt
Так делать можно не всегда. Если робот не может зайти на страницу, он может не увидеть мета-тег noindex. Для удаления уже известного URL это иногда мешает, а не помогает. Если цель — убрать страницу из индекса, лучше сначала дать роботу увидеть запрет, а уже потом при необходимости ограничивать обход.
Закрыли весь тип записей из-за одной проблемной страницы
Это частая ошибка при массовой настройке SEO-плагина. В итоге из поиска исчезают полезные страницы, которые должны работать. Если проблема точечная, закрывайте точечно.
Забыли про кеш
После изменения мета-тегов и заголовков старый HTML может продолжать отдаваться из кеша. Очистите кеш плагина, серверный кеш и, если есть, CDN. Иначе проверка покажет старую версию, и вы будете искать несуществующую ошибку в коде.
Безопасность и производительность
С точки зрения производительности лучше не добавлять тяжёлую логику в wp_head для каждого запроса. Если условие простое, проверка по ID или по шаблону почти не влияет на нагрузку. Если логика сложнее, вынесите её в отдельный мини-плагин, а не в активную тему, чтобы не потерять настройку при смене дизайна.
Если на сайте много технических страниц и дублей, полезно сначала навести порядок в генерации URL, а уже потом ставить запреты на индексацию. В противном случае вы просто спрячете симптом. Для чистки дублей и технических настроек иногда удобнее использовать специализированный плагин вроде Clearfy Pro, если он уже есть в стеке, но решение всё равно нужно проверять по фактическому HTML и заголовкам, а не по галочкам в админке.
Главный критерий простой: после внедрения поисковик должен видеть ровно то, что вы задумали, а не смесь из мета-тегов, заголовков, canonical и правил robots.txt. Если это проверить на нескольких реальных URL, дальше настройка обычно становится предсказуемой и не требует ручного контроля каждый день.