Как закрыть страницы от индексации: robots, noindex и что не работает
Разбираем разницу между запретом обхода и запретом индексации, почему закрытая в robots страница всё равно в поиске и как убрать её правильно.
Содержание
- Обход и индексация это две разные операции
- Почему запрещённая в robots страница попадает в выдачу
- noindex: метатег и заголовок X-Robots-Tag
- Канонические ссылки: подсказка, а не запрет
- Что закрывать на сайте услуг и чем именно
- Как убрать то, что уже в индексе
- Проверка: как убедиться, что запрет сработал
- Пять ошибок, которые вижу чаще всего
- Что делать дальше
- Частые вопросы
Запрет в robots.txt закрывает обход, а не индексацию: страница может попасть в выдачу без содержимого, по одним внешним ссылкам. Чтобы страницы не было в поиске, нужен мета-тег или заголовок с запретом индексации, а сама страница при этом должна остаться доступной роботу.
Просьба «закрой от индексации» приходит ко мне раз в две недели, и почти всегда её пытались выполнить сами: дописали в robots.txt строчку Disallow и удивились, что через месяц страница висит в Google. Это не баг поиска и не задержка апдейта. robots.txt и запрет индексации решают разные задачи, и если перепутать инструменты, страница остаётся в выдаче годами. Разберём, чем закрывать что, как убрать уже проиндексированный мусор и как проверить, что запрет реально сработал.

Пишу по опыту обслуживания сайтов на WordPress, Битриксе и Тильде: сценарии одинаковые везде, отличаются только места, куда лезть руками.
Обход и индексация это две разные операции
У поискового робота работа делится на этапы. Сначала он узнаёт про URL (из ссылки на вашем сайте, из чужой ссылки, из sitemap.xml, из истории обхода). Потом решает, можно ли туда зайти, и вот тут читается robots.txt. Если зайти можно, качает страницу. Только после этого решает, класть ли её в индекс, и на этом шаге смотрит на метатег robots, заголовок X-Robots-Tag, код ответа и канонические ссылки.
robots.txt управляет только вторым шагом. Он говорит «не ходи сюда», а не «не показывай это в поиске». Разница кажется формальной ровно до момента, когда клиент пишет: «у меня в Google по названию компании выпадает страница /spasibo/ с телефоном менеджера, уберите».
Формулировка «закрыть страницу в robots txt от индексации» живёт в головах с нулевых, когда поведение поисковиков было проще. Сегодня она приводит к прямо противоположному результату, и ниже я объясню механику.
Отдельно: Google перестал поддерживать директиву noindex внутри robots.txt с 1 сентября 2019 года. Если у вас в файле лежит строка Noindex: /spasibo/, она игнорируется полностью, вы просто написали комментарий длиной в 18 символов.
Почему запрещённая в robots страница попадает в выдачу
Ловушка выглядит так. Робот нашёл ссылку на /spasibo/ (например, форма редиректит туда после отправки, а кто-то поделился ссылкой в мессенджере, где стоит превью-бот). URL попал в очередь. Робот идёт проверять robots.txt, видит Disallow: /spasibo/ и не скачивает страницу.
Но URL-то он уже знает. И если сигналов достаточно (ссылки, упоминания, sitemap), Google может показать этот адрес в результатах. Заголовок он соберёт из анкоров ссылок или из самого URL, а вместо описания напишет что-то в духе «Информация об этой странице недоступна». Страница в индексе, содержимое не прочитано, убрать нечем.
Самое обидное в этой схеме: если вы одновременно поставили на странице <meta name="robots" content="noindex"> и закрыли её в robots.txt, вы своими руками запретили роботу прочитать ваш же запрет. Он не зайдёт на страницу, не увидит noindex и не выкинет URL из индекса. Запрет обхода блокирует доставку запрета индексации.
Яндекс ведёт себя строже: закрытые в robots.txt страницы он в поиск обычно не отдаёт и складывает в раздел «Исключённые страницы» в Вебмастере со статусом «Запрещена в robots.txt». Но полагаться на разное поведение двух поисковиков в 2026 году я бы не стал. Правило простое: если страницу надо убрать из выдачи, обход ей должен быть разрешён.
У меня был клиент, у которого тестовый поддомен dev. был закрыт единственной строчкой Disallow: / в robots.txt. Полгода спустя по запросу с названием бренда в Google на второй странице висело шесть URL с этого поддомена, включая /oplata-test/. Робот в них не заходил ни разу, но адреса показывал.
noindex: метатег и заголовок X-Robots-Tag
Настоящий запрет индексации существует в двух формах, и обе работают только при разрешённом обходе.
Метатег в HTML
Кладётся в <head> страницы:
<meta name="robots" content="noindex, follow">
noindex убирает страницу из индекса, follow разрешает роботу пройти по ссылкам с неё дальше. Ставлю follow почти всегда: страница исчезает из поиска, но ссылочный обход сайта не рвётся. noindex, nofollow имеет смысл только для откровенного мусора, куда вы не хотите пускать робота вообще.
Где это настраивается без кода:
- WordPress + Rank Math: Заголовки и мета, там по типам записей и таксономиям, плюс блок Rank Math под каждой отдельной записью, вкладка Дополнительно.
- WordPress + Yoast: Дополнительно у записи, пункт «Разрешить поисковым системам показывать эту запись в результатах поиска».
- Битрикс: свойство страницы или шаблон, в редакции Стандарт удобнее прописать в
.settingsраздела или через$APPLICATION->SetPageProperty('robots', 'noindex, follow'). - Тильда: Настройки страницы, вкладка SEO, галочка «Не индексировать страницу».
Если правится кодом в WordPress, я обычно вешаю один обработчик и держу список условий в нём:
// wp-content/themes/child/functions.php
add_filter('wp_robots', function (array $robots) {
if (is_search() || is_author() || is_page(['spasibo', 'zayavka-prinyata'])) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});
Фильтр wp_robots появился в WordPress 5.7 и заменил ручную вставку тега в wp_head. Rank Math и Yoast его уважают, так что конфликта не будет.
Заголовок X-Robots-Tag
Метатег живёт в HTML, а у PDF, XLSX и картинок никакого HTML нет. Для них есть HTTP-заголовок, он работает точно так же и имеет тот же приоритет.
Apache, в .htaccess:
<FilesMatch ".(pdf|docx?|xlsx?|zip)$">
Header set X-Robots-Tag "noindex, noarchive"
</FilesMatch>
Nginx, в конфиге сервера:
location ~* .(pdf|docx?|xlsx?|zip)$ {
add_header X-Robots-Tag "noindex, noarchive" always;
}
Заголовок удобен ещё и тем, что закрывает целые ветки URL без правки шаблонов. Скажем, старый раздел акций на 400 страниц можно погасить одним правилом, не заходя в админку.
Проверяется одной командой:
curl -sI "https://example.ru/docs/price-2024.pdf" | grep -i "x-robots-tag"
# X-Robots-Tag: noindex, noarchive
Канонические ссылки: подсказка, а не запрет
rel="canonical" регулярно предлагают как способ «убрать страницу из индекса». Это не запрет. Это сообщение поисковику: вот у этой страницы есть главная версия, склей их и показывай главную.
Ключевое слово тут «сообщение». Google обращается с каноникалом как с рекомендацией и вполне может выбрать другой адрес главным, о чём честно пишет в Search Console: «Страница является копией. Google выбрал другую каноническую страницу». Яндекс поддерживает canonical, но тоже оставляет за собой право решать.
Когда canonical уместен:
- дубли с параметрами:
/uslugi/?utm_source=yandexсклеивается с/uslugi/; - один товар в двух категориях;
- версия для печати.
Когда не уместен: страница благодарности, результаты внутреннего поиска, служебные разделы, тестовые копии. Там нужен noindex, потому что вы хотите не склейку, а исчезновение.
Для параметров у Яндекса есть отдельный и более надёжный механизм, директива в robots.txt:
User-agent: Yandex
Clean-param: utm_source&utm_medium&utm_campaign&yclid&from
Она говорит: игнорируй эти параметры, страница с ними и без них одна и та же. Работает быстрее и предсказуемее, чем canonical, но только для Яндекса.
Подробнее про сам механизм склейки я разбирал в статье про канонические ссылки, а как вообще найти у себя дубли, чтобы понимать масштаб проблемы, в материале про поиск дублей страниц.
Что закрывать на сайте услуг и чем именно
Ниже таблица, по которой я обычно прохожусь при аудите. Она закрывает процентов девяносто типовых ситуаций у малого бизнеса.
| Что закрываем | Чем | Почему не robots.txt |
|---|---|---|
Страница благодарности /spasibo/ | noindex, follow | Иначе URL всплывёт в выдаче без описания |
Результаты внутреннего поиска /?s= | noindex, follow | Робот должен увидеть запрет, а не упереться в дверь |
| Архивы автора и меток на сайте одного человека | noindex, follow | Это дубли листингов, но обход нужен для перелинковки |
| Корзина, оформление заказа, личный кабинет | noindex, nofollow | Ходить роботу там нечего |
| Дубли с utm и фильтрами | canonical плюс Clean-param | Вес склеивается, а не теряется |
| PDF-прайсы и старые коммерческие предложения | X-Robots-Tag | В файле негде разместить метатег |
Служебные каталоги /wp-admin/, /bitrix/, /cgi-bin/ | Disallow в robots.txt | Их и не надо индексировать, обход тратит краулинговый бюджет |
| Тестовая или staging-копия | HTTP-авторизация на уровне сервера | robots.txt публичен, URL утекает через ссылки и превью |
| Удалённый навсегда раздел | Код ответа 410 | Запрет не нужен, нужен сигнал «этого больше нет» |
Про последние две строки скажу отдельно, потому что на них спотыкаются чаще всего.
Тестовую копию закрывают паролем, а не файлом. robots.txt не мешает никому: ни человеку, ни парсеру, ни превью-боту мессенджера. Три строки в .htaccess надёжнее любых директив:
AuthType Basic
AuthName "dev"
AuthUserFile /home/user/private/.htpasswd
Require valid-user
Пароль создаётся командой htpasswd -c /home/user/private/.htpasswd dev, файл кладётся вне docroot. Робот получит 401 и уйдёт, а вы попадёте на сайт по логину.
Удалённый раздел лучше отдавать кодом 410 Gone, а не 404. Разница в том, что 404 означает «сейчас нет, может появится», а 410 означает «удалено окончательно». Google выкидывает такие URL из индекса заметно быстрее.
// mu-plugins/gone.php
add_action('template_redirect', function () {
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if (strpos($uri, '/akcii-2023/') === 0) {
status_header(410);
nocache_headers();
exit;
}
});
Что закрывать не надо, хотя предлагают: пагинацию блога и каталога. Страницы вида /blog/page/2/ держат обход глубоких материалов. Закроете их от индексации вместе с обходом, и робот перестанет находить старые статьи.
Отдельная тема, как правильно составить сам файл для WordPress с учётом ajax, плагинов кэша и sitemap, разбиралась в статье про robots.txt для WordPress.
Как убрать то, что уже в индексе
Порядок важен. Если сделать шаги не по очереди, страница застрянет в выдаче ещё на месяц.
- Снять Disallow в robots.txt, если он там был. Робот обязан получить доступ к странице.
- Поставить noindex (метатег или заголовок), либо отдать 410, если страница действительно удалена.
- Убрать URL из sitemap.xml и убрать внутренние ссылки на него. Sitemap с закрытыми страницами это противоречивый сигнал, поисковик их не любит.
- Отправить страницу на переобход. В Яндекс Вебмастере это Индексирование, Переобход страниц. Дневной лимит зависит от размера и качества сайта, у типовой визитки это десятки URL в сутки. В Google Search Console это Проверка URL, дальше кнопка «Запросить индексирование».
- Если срочно, воспользоваться инструментами удаления. В Вебмастере это Инструменты, Удаление страниц из поиска (до 500 URL в сутки, работает при 404, 403 или при действующем noindex). В Search Console это Удаления, Временное скрытие, но помните: оно прячет URL примерно на полгода и не удаляет его из индекса. Если за это время noindex не появится, страница вернётся.
По срокам: Яндекс обычно чистит выдачу в течение одного-двух апдейтов, то есть от недели до месяца. Google при 410 и запросе на переобход снимает страницу за несколько дней, при обычном noindex без запроса может думать месяц. Если сайт молодой и обходится редко, умножайте на два.
Что делать нельзя: удалять страницу физически, оставив Disallow. Тогда робот не сможет проверить, что она отдаёт 404, и продолжит держать URL в индексе.
Работать с обоими инструментами удобнее, когда сайт уже подтверждён и настроен. Если Вебмастер у вас в состоянии «заведён и забыт», начните с базовой настройки Яндекс Вебмастера, там же видно, какие разделы попали в исключённые и почему.
Проверка: как убедиться, что запрет сработал
Самая частая причина, по которой запрет «не работает», это то, что его никто не проверил. Плагин показал галочку в админке, а на живой странице тега нет: перебил шаблон, кэш отдаёт старую версию, конфликт двух SEO-плагинов.
Минимальная проверка руками занимает минуту:
# метатег на месте?
curl -s "https://example.ru/spasibo/" | grep -i '<meta name="robots"'
# заголовок X-Robots-Tag и код ответа
curl -sI "https://example.ru/spasibo/" | head -n 12
# посмотреть глазами робота Яндекса
curl -s -A "Mozilla/5.0 (compatible; YandexBot/3.0)" "https://example.ru/spasibo/" | grep -i robots
Юзер-агент подставляю потому, что некоторые плагины и защиты от ботов отдают роботам другую версию страницы. Видел случай, когда плагин кэша выдавал ботам страницу без <head> целиком.
Дальше по инструментам:
- Яндекс Вебмастер, Инструменты, Анализ robots.txt: вставляете список URL и видите, разрешён обход или нет.
- Яндекс Вебмастер, Инструменты, Проверка ответа сервера: показывает код ответа и заголовки так, как их видит робот.
- Google Search Console, Проверка URL: строка «Индексирование разрешено?» и блок «Сканирование». Если там «Заблокировано в файле robots.txt», а вы ждали noindex, значит поймали ту самую ловушку.
- Оператор
site:example.ru/spasibo/в поиске. Грубо, неточно, но позволяет за пять секунд понять, есть страница в выдаче или нет.
И контрольная точка через месяц. Индексация не мгновенная, судить о результате в день правки бессмысленно.
Пять ошибок, которые вижу чаще всего
- Disallow и noindex одновременно на одной странице. Классика. Запрет индексации не доезжает до робота.
- Закрытая целиком папка
/wp-content/. Робот не видит CSS и JS, страница в его глазах рассыпается, Google считает её неадаптивной. Лечится удалением строки: там нет ничего секретного, а PHP-файлы всё равно не отдаются как текст. - Забытая галочка в WordPress: Настройки, Чтение, «Попросить поисковые системы не индексировать сайт». Её ставят на время работ и не снимают. Симптом характерный: трафик падает в ноль за две-три недели, при этом сайт работает и выглядит нормально. Проверяется за десять секунд командой
curl -s https://example.ru/ | grep noindex. - robots.txt как средство защиты приватного. Файл лежит в открытом доступе и читается кем угодно. Строчка
Disallow: /admin-old/это не защита, а подсказка сканеру, где искать. Приватное закрывается авторизацией. - Закрытие через robots.txt страниц с utm-метками. Робот перестанет их обходить, но склейки не произойдёт, а внешние ссылки с метками потеряют вес. Тут нужны canonical и Clean-param.
Что делать дальше
Если вы читаете это, потому что в выдаче торчит что-то лишнее, план на ближайший час такой. Открыть свой https://ваш-сайт.ru/robots.txt и посмотреть, что там закрыто. Прогнать проблемные URL через curl и увидеть реальные заголовки. Убрать Disallow с тех страниц, которые надо выкинуть из индекса, и поставить им noindex. Отправить на переобход в Вебмастере и Search Console. Через месяц проверить.
Если страниц много, разбор занимает от двух до четырёх часов: выгрузка индекса из Вебмастера и Search Console, сверка со структурой сайта, правка robots.txt, расстановка noindex, отправка удалений. Разовой работой это стоит порядка 6 000 рублей, в абонентском обслуживании входит в тариф вместе с регулярной проверкой индекса. Цифры по тарифам лежат на странице с ценами, там же видно, что в них не входит (разработку с нуля и дизайн я не делаю, только обслуживание существующих сайтов).
Если из индекса надо срочно убрать что-то чувствительное, персональные данные в PDF или тестовую копию с реальными заказами, лучше не ждать месяц и не экспериментировать с директивами: напишите через форму на главной, разберёмся в тот же день. Остальные материалы по индексации и структуре собраны в рубрике про SEO.
Частые вопросы
Чем robots.txt отличается от noindex
Первый запрещает заходить на страницу, второй запрещает показывать её в поиске. Это разные вещи, и именно поэтому запрет в robots.txt не убирает страницу из выдачи.
Почему закрытая страница всё равно в поиске
Потому что робот не может зайти и прочитать запрет индексации: вход ему закрыт файлом robots.txt. Он видит только внешние ссылки и показывает адрес без описания.
Как правильно убрать страницу из поиска
Разрешить обход, поставить мета-тег с запретом индексации или соответствующий заголовок ответа и дождаться переобхода. Только после исчезновения из выдачи можно закрывать в robots.txt.
Что закрывать на сайте услуг
Служебные страницы, результаты поиска по сайту, страницы с параметрами сортировки, тестовые разделы и страницы благодарности. Всё остальное обычно должно быть открыто.