Если нужно закрыть от поисковиков не весь сайт, а только конкретные страницы, robots.txt — не всегда лучший инструмент. Он управляет сканированием, но не гарантирует исключение URL из индекса, если страница уже известна поисковой системе. Для WordPress в таких задачах надежнее использовать noindex, а в ряде случаев — еще и убрать ссылку на страницу из внутренних переходов.
Типичный сценарий: на сайте есть страницы поиска, фильтров, служебные архивы, результаты сортировки, страницы благодарности после формы, приватные разделы или дубли контента. Их нужно оставить для работы сайта, но не показывать в выдаче. Ниже — рабочие способы без выдуманных хуков и без лишней магии.
Когда проблема действительно в индексации, а не в сканировании
Сначала стоит понять, что именно происходит. Если страница уже попала в индекс, простого запрета в robots.txt может быть недостаточно: поисковик может сохранить URL в базе без содержимого или с устаревшим сниппетом. Если же страница еще не индексировалась, но вы хотите не допустить этого в будущем, достаточно корректного noindex и нормальной внутренней структуры ссылок.
Диагностика проблемы
Проверьте несколько вещей:
- есть ли страница в индексе по запросу
site:example.com URL; - отдает ли она мета-тег
noindexили HTTP-заголовокX-Robots-Tag; - не закрыта ли она случайно в
robots.txtраньше, чем вы добавилиnoindex; - не ведут ли на нее внутренние ссылки из меню, хлебных крошек, виджетов и блоков;
- не генерирует ли тема или плагин дубли с параметрами в URL.
Если страница уже в индексе, а вы просто закрыли ее в robots.txt, поисковик может не увидеть новый noindex, потому что не сможет повторно просканировать страницу. В таких случаях сначала убирают запрет на сканирование, затем ставят noindex, а уже потом при необходимости возвращают ограничения.
Что выбрать: плагин, код или заголовок ответа
Для WordPress есть несколько реальных вариантов. Выбор зависит от того, закрываете ли вы отдельные записи, архивы, страницы с параметрами или целые шаблоны.
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Нужно закрыть записи, таксономии, архивы через интерфейс | Быстро и без кода | Не всегда удобно для точечных условий |
| Код в теме или MU-плагине | Нужна логика по шаблону, роли, типу записи, параметрам URL | Гибко и прозрачно | Требует аккуратного тестирования |
X-Robots-Tag | Нужно закрыть не-HTML файлы или ответ на уровне сервера | Работает на уровне HTTP | Нужно правильно настроить сервер или PHP |
Если задача типовая, проще использовать SEO-плагин. Если нужен контроль над конкретными условиями, лучше добавить код. Для служебных страниц и нестандартных шаблонов это обычно надежнее.
Пошаговое решение через код
Ниже пример для случаев, когда нужно закрыть от индексации конкретные страницы по ID, шаблону или типу записи. Код можно положить в functions.php дочерней темы, но для рабочих проектов безопаснее вынести его в небольшой MU-плагин.
1. Добавляем мета-тег noindex для выбранных страниц
<?php
add_action('wp_head', function () {
if (is_page(array(12, 34)) || is_page_template('templates/thank-you.php')) {
echo "<meta name=\"robots\" content=\"noindex, nofollow\" />\n";
}
}, 1);
Этот вариант подходит для обычных HTML-страниц. Если страница должна оставаться доступной пользователю, но не участвовать в поиске, noindex, nofollow — рабочая базовая настройка. Если ссылки на странице полезны для обхода сайта, можно использовать только noindex без nofollow.
2. Закрываем архивы, которые создают дубли
Частая проблема — архивы автора, даты или нестандартные таксономии, которые дублируют основной контент и не несут самостоятельной ценности. Для них можно задать noindex через условные теги WordPress.
<?php
add_action('wp_head', function () {
if (is_author() || is_date() || is_tag()) {
echo "<meta name=\"robots\" content=\"noindex, follow\" />\n";
}
}, 1);
Такой подход не ломает сайт и не мешает пользователю переходить по ссылкам внутри архива. Но если архивы у вас реально нужны для SEO, не закрывайте их автоматически — сначала проверьте, есть ли у них уникальный контент и трафик.
3. Отдаем X-Robots-Tag на уровне ответа
Если нужно закрыть не только HTML-страницу, но и, например, PDF или другой файл, удобнее использовать HTTP-заголовок. В WordPress это можно сделать через send_headers.
<?php
add_action('send_headers', function () {
if (is_page(array(56, 78))) {
header('X-Robots-Tag: noindex, nofollow', true);
}
});
Этот способ полезен, когда шаблон страницы формируется не только через <head>, или когда вы хотите управлять индексацией на уровне ответа сервера. Но важно не дублировать конфликтующие правила: если в <head> стоит index, а в заголовке noindex, результат будет зависеть от того, что увидит поисковик первым. Лучше оставить один источник правды.
Как закрыть отдельный URL с параметрами
У WordPress часто появляются дубли с параметрами сортировки, фильтрации или UTM-метками. Не все из них нужно закрывать от индексации, но если параметр создает отдельную страницу без уникальной ценности, можно отдать noindex только для таких запросов.
<?php
add_action('wp_head', function () {
if (!empty($_GET['sort']) || !empty($_GET['filter'])) {
echo "<meta name=\"robots\" content=\"noindex, follow\" />\n";
}
}, 1);
Здесь важно не переборщить. UTM-метки обычно не требуют noindex, если каноникал настроен корректно и страница не меняет содержимое. А вот фильтры, которые создают десятки комбинаций, часто действительно стоит закрывать.
Проверка результата после внедрения
После правки не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что страница отдает именно тот сигнал, который вы ожидаете.
- Откройте исходный код страницы и найдите
<meta name="robots" ...>. - Проверьте HTTP-заголовки через DevTools,
curl -I https://example.com/page/или аналогичный инструмент. - Убедитесь, что на странице нет конфликтующих директив от SEO-плагина и вашего кода.
- Посмотрите, не осталась ли страница в XML-карте сайта.
- Проверьте внутренние ссылки: если страница не нужна пользователю, уберите ее из меню, блоков и виджетов.
Пример проверки заголовков:
curl -I https://example.com/thank-you/
В ответе ищите X-Robots-Tag, если вы использовали этот способ. Если ставили мета-тег в <head>, откройте исходный код страницы и убедитесь, что тег выводится только один раз.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt, но не поставили noindex
Это самая частая ошибка. Страница может остаться в индексе, потому что поисковик уже знает URL. Исправление: уберите запрет на сканирование, дайте поисковику увидеть noindex, затем при необходимости снова ограничьте обход.
Два SEO-плагина одновременно управляют robots
Если один плагин ставит index, а другой — noindex, вы получите непредсказуемый результат. Оставьте только один источник управления мета-тегами. Если используете код, проверьте, не генерирует ли его еще и тема.
Страница закрыта, но осталась в sitemap
Это мешает поисковику быстрее обновить статус URL. Уберите закрытую страницу из карты сайта, если плагин позволяет это сделать. Для служебных страниц лучше вообще не включать их в sitemap.
Ставят noindex на все архивы без анализа
Иногда архивы автора или рубрик дают трафик и помогают навигации. Автоматическое закрытие всех архивов — не универсальное решение. Сначала посмотрите статистику и только потом решайте, что закрывать.
Используют nofollow там, где он не нужен
nofollow не решает проблему индексации сам по себе. Если цель — убрать URL из поиска, важнее noindex. nofollow имеет смысл только когда вы сознательно не хотите передавать сигнал по ссылкам со страницы.
Практические советы по безопасности и производительности
Если вы добавляете код вручную, не правьте основной шаблон на живом сайте. Лучше использовать дочернюю тему или MU-плагин, чтобы обновление темы не стерло изменения. Для точечных правил это особенно важно: одна забытая правка в functions.php может сломать вывод всего сайта.
Еще один полезный момент — не плодить условные проверки в нескольких местах. Если у вас уже есть SEO-плагин, сначала проверьте его настройки. В ряде случаев проще закрыть страницу через интерфейс, чем поддерживать собственный код. Но если нужна тонкая логика, код в одном месте обычно чище, чем набор разрозненных исключений.
Если на сайте много дублей, служебных архивов и мусорных URL, имеет смысл сначала навести порядок в общей SEO-гигиене. Для этого часто используют отдельные инструменты вроде Clearfy Pro: он помогает убирать лишние элементы, дубли и часть технического шума без ручного редактирования каждого шаблона. Но даже с плагином важно понимать, что именно вы закрываете и почему.
Когда лучше не трогать индексацию кодом
Если страница уже участвует в поисковом трафике, не меняйте ее статус наугад. Сначала проверьте запросы в Search Console, логи переходов и внутреннюю роль страницы в структуре сайта. Иногда правильнее не закрывать URL, а доработать контент, каноникал или перелинковку.
Код для noindex оправдан, когда у вас есть четкое правило: служебные страницы, дубли, временные формы, результаты поиска по сайту, приватные разделы. Во всех остальных случаях лучше сначала решить, нужна ли страница пользователю и поисковику, а уже потом ставить запрет на индексацию.