Иногда сайт нужно спрятать от поиска: пока он в разработке, живёт на тестовом домене или содержит разделы, которым в выдаче не место. Способов четыре — robots.txt, meta noindex, HTTP-заголовок X-Robots-Tag и пароль. Они решают разные задачи, и путать их — самая частая причина, почему «закрытый» сайт всё равно висит в поиске. Разберу каждый с кодом и покажу, когда какой применять.
robots.txt (Disallow) запрещает обход, но не удаляет из индекса. meta noindex — надёжный способ выкинуть страницу из поиска. X-Robots-Tag — то же самое через HTTP-заголовок, удобно для PDF и массово. Пароль (basic auth) полностью прячет dev и staging. Главное правило: noindex и Disallow одновременно на одну страницу ставить нельзя — робот не зайдёт и не увидит тег.
Зачем закрывать сайт от индексации
Причин спрятать сайт или его часть от поиска несколько, и под каждую подходит свой инструмент:
- Сайт в разработке. Пока идёт вёрстка и наполнение, страницы с рыбным текстом и битой структурой не должны попасть в выдачу — иначе поисковик запомнит их как основной контент.
- Тестовый или dev-домен. Копия сайта на поддомене вроде
dev.site.ruилиtest.site.ru— прямой источник дублей. Если она проиндексируется, вы получите две одинаковые версии сайта в поиске. - Staging перед релизом. Финальная сборка, которую показывают заказчику. Её нельзя светить в поиске, пока не выкатили на прод.
- Технические и служебные разделы. Админка, корзина, личный кабинет, страницы результатов внутреннего поиска, фильтры с параметрами — засоряют индекс и создают дубли.
- Контент раньше времени. Акция, лендинг или раздел, который должен «выстрелить» в конкретную дату, а не утечь в поиск заранее.
Это противоположная задача той, что разбираю в статье про сайт, который не индексируется: там страницы нужно в поиск загнать, здесь — убрать. Механики те же, только знаки поменялись.
Способ 1. Закрыть через robots.txt
robots.txt — текстовый файл в корне сайта, который управляет обходом. Доступен по адресу https://ваш-сайт.ru/robots.txt. Это первое, что открывает поисковый робот, заходя на сайт. Общий разбор файла — в статье про robots.txt и sitemap.xml.
Чтобы закрыть весь сайт от всех роботов, файл состоит из двух строк:
User-agent: *
Disallow: /
User-agent: * — правило для всех роботов, Disallow: / — запрет на весь сайт целиком. Собрать корректный файл под свои разделы можно в генераторе robots.txt, чтобы не ошибиться в синтаксисе.
Чтобы закрыть отдельные разделы, а не весь сайт:
User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /search/
Disallow: /lichnyy-kabinet/
Закрыть сайт только от одного поисковика — указываете его User-agent:
User-agent: Googlebot
Disallow: /
User-agent: Yandex
Disallow: /
Первый блок закроет сайт от Google, второй — от Яндекса. Оставьте только нужный, если закрываете от одной системы.
Важный нюанс. robots.txt запрещает обход, но не гарантирует отсутствие страницы в поиске. Если на закрытую страницу ведут внешние ссылки, Google может показать её URL в выдаче без описания, с пометкой, что содержимое недоступно. И главное: Disallow не удаляет уже проиндексированные страницы — он лишь останавливает дальнейший обход. Для гарантированного удаления из индекса нужен noindex.
Способ 2. Meta-тег noindex — самый надёжный для страницы
Если задача — именно выкинуть страницу из поиска, а не просто запретить обход, используют meta-тег robots. Его добавляют в раздел <head> нужной страницы:
<meta name="robots" content="noindex, nofollow">
Что означают значения:
- noindex — не добавлять страницу в индекс, а если она уже там, убрать при следующем обходе;
- nofollow — не переходить по ссылкам с этой страницы. Если ссылки должны работать, оставьте только
content="noindex".
В отличие от robots.txt, здесь робот заходит на страницу, читает тег и выполняет команду. Поэтому noindex надёжно удаляет страницу из индекса — и Яндекс, и Google понимают его одинаково.
Закрыть страницу только для одного поисковика можно, подставив имя робота вместо общего robots:
<meta name="googlebot" content="noindex">
<meta name="yandex" content="noindex">
Чтобы закрыть весь сайт этим способом, тег ставят в шаблон, который подключается ко всем страницам (в WordPress — через SEO-плагин галочкой «Запретить индексацию», в самописном движке — в общий header). Тогда noindex автоматически появится на каждой странице.
Ключевое правило: страницу с meta noindex нельзя закрывать в robots.txt. Если робот не может зайти на страницу (Disallow), он не прочитает тег noindex — и страница так и останется в индексе. Работает одно из двух, не оба сразу.
Способ 3. X-Robots-Tag — заголовок для не-HTML и массового закрытия
Meta-тег можно поставить только в HTML. Для PDF, изображений, XML и других файлов, а также когда нужно закрыть много страниц разом, используют HTTP-заголовок X-Robots-Tag — он несёт ту же команду noindex, но на уровне ответа сервера.
Nginx. В блоке server или location:
add_header X-Robots-Tag "noindex, nofollow";
Чтобы закрыть только PDF-файлы:
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex";
}
Apache. В .htaccess или конфиге:
Header set X-Robots-Tag "noindex, nofollow"
Закрыть только определённый тип файлов в Apache:
<FilesMatch "\.(pdf|doc|xls)$">
Header set X-Robots-Tag "noindex"
</FilesMatch>
Проверить, что заголовок реально отдаётся, удобно через проверку ответа сервера — инструмент покажет все HTTP-заголовки ответа, включая X-Robots-Tag, и заодно код ответа. В консоли то же самое даёт curl -I https://ваш-сайт.ru/.
Способ 4. Парольная защита — для dev и staging
Самый жёсткий вариант: закрыть сайт паролем через HTTP basic auth. Робот не пройдёт авторизацию, не получит контент и просто не сможет ничего проиндексировать. Это идеальный способ для тестовых и staging-серверов, где сайт вообще не должен быть виден публике.
Nginx. Создаёте файл с логином и паролем и подключаете его:
location / {
auth_basic "Closed";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Файл .htpasswd генерируют командой:
htpasswd -c /etc/nginx/.htpasswd admin
Apache. В .htaccess:
AuthType Basic
AuthName "Closed"
AuthUserFile /path/.htpasswd
Require valid-user
Плюс пароля перед robots.txt и noindex: он закрывает сайт не только от поисковиков, но и от парсеров, спам-ботов и случайных посетителей. Минус — сайт становится недоступен без логина, поэтому для боевого сайта способ не годится, только для закрытых окружений.
robots.txt Disallow: / # запрет обхода, НЕ удаляет из индекса meta content="noindex" # удаляет страницу из поиска — надёжно X-Robots add_header ... noindex # то же для PDF/картинок и массово basic auth auth_basic + .htpasswd # полностью прячет dev/staging
Одна страница, раздел или весь сайт
Способ выбирают не только по типу задачи, но и по масштабу — что именно закрываем.
- Одна страница. meta noindex в
<head>этой страницы. Быстро, точечно, ничего не ломает вокруг. - Раздел или группа страниц. Disallow нужного пути в robots.txt (
Disallow: /blog/chernoviki/), если страницы ещё не в индексе. Если уже в индексе — noindex на шаблон раздела. - Весь боевой сайт временно. noindex на общий шаблон (через плагин или header) плюс, при желании, Disallow: / в robots.txt. Помните про правило: не оба на одну страницу.
- Тестовый или dev-домен целиком. Парольная защита. Она надёжнее любых тегов и не зависит от того, соблюдает ли робот правила.
- Только один поисковик. Отдельный User-agent в robots.txt или именной meta-тег (
googlebot,yandex).
Как убрать уже проиндексированный сайт из поиска
Если сайт или страницы уже попали в индекс, одного robots.txt мало — Disallow не удаляет, а замораживает. Порядок действий такой:
- Поставьте noindex. meta-тег или X-Robots-Tag на страницы, которые нужно убрать. Убедитесь, что эти же страницы не закрыты в robots.txt — иначе робот не зайдёт и не прочитает команду.
- Дождитесь переобхода или ускорьте его. Робот должен зайти на страницу, увидеть noindex и убрать её из индекса. Как ускорить обход — в разборе про индексацию сайта.
- Ускорьте удаление вручную. В Яндекс.Вебмастере — раздел «Инструменты → Удаление страниц из поиска»: вводите URL, робот выкинет их быстрее. В Google Search Console — «Удаления → Временно удалить URL», но это временная мера на полгода; для постоянного удаления всё равно нужен noindex или 404.
Официальные инструкции — в справке Яндекс.Вебмастера. После того как страницы выпали из поиска, можно закрыть их и в robots.txt, чтобы робот больше не тратил на них обход.
Частые ошибки
- Закрыли только в robots.txt при уже проиндексированном сайте. Disallow не удаляет страницы из поиска — они остаются в индексе, просто перестают обновляться. Нужен noindex.
- Поставили noindex и Disallow на одну страницу. Робот не может зайти на страницу, закрытую в robots.txt, а значит не видит тег noindex. Команда на удаление не срабатывает. Выбирайте что-то одно.
- Забыли снять запрет при переносе на прод. Классика после разработки: сайт выкатили в бой, а на нём остался
Disallow: /или noindex со времён верстки. Сайт не индексируется, трафика нет. Проверяйте robots.txt и код страниц сразу после релиза. - Понадеялись на robots.txt как на защиту приватных данных. Файл публичный, его видят все. Пути к админке в нём — подсказка злоумышленнику. Для скрытия окружений используйте пароль.
- Закрыли dev-домен только тегами. Тестовый сервер надёжнее прятать паролем: noindex и Disallow полагаются на добросовестность робота, а basic auth просто не пускает никого.
Главное
robots.txt (Disallow) запрещает обход, но не удаляет из индекса — для этого он не годится. meta noindex — надёжный способ выкинуть страницу из поиска: робот заходит, читает тег и убирает страницу. X-Robots-Tag делает то же через HTTP-заголовок, удобен для PDF, картинок и массового закрытия.
Тестовые и staging-серверы прячьте паролем через basic auth — это надёжнее любых тегов. Никогда не ставьте noindex и Disallow на одну страницу: закрытую в robots.txt страницу робот не откроет и тег не увидит.
Проверяйте результат: robots.txt — в браузере, noindex — в исходном коде, X-Robots-Tag — через проверку ответа сервера. Если после разработки сайт не хочет заходить в поиск, смотрите обратную задачу — почему сайт не индексируется.
Частые вопросы
Как закрыть весь сайт от индексации?
Самый надёжный способ — meta-тег noindex в разделе head каждой страницы: <meta name="robots" content="noindex, nofollow">. Для запрета обхода добавляют в robots.txt строки User-agent: * и Disallow: /. Для dev- и staging-серверов лучше поставить парольную защиту через basic auth — тогда робот вообще не получит доступ к страницам. robots.txt в одиночку не гарантирует удаление из индекса, только запрещает обход.
В чём разница между robots.txt и meta noindex?
Disallow в robots.txt запрещает роботу заходить на страницу, но не гарантирует, что её не будет в поиске: если на неё есть внешние ссылки, Google может показать URL без описания. Meta noindex разрешает роботу зайти и прямо говорит убрать страницу из индекса — это надёжный способ выкинуть страницу из поиска. Ключевой нюанс: если страница закрыта в robots.txt, робот не зайдёт на неё и не увидит noindex. Эти два способа нельзя применять к одной странице одновременно.
Как закрыть от индексации одну страницу?
Добавьте в раздел head этой страницы meta-тег <meta name="robots" content="noindex, nofollow">. Страница останется доступной пользователям, но выпадет из поиска после следующего обхода роботом. Это работает и для Яндекса, и для Google. Для не-HTML файлов (PDF, изображения) вместо meta-тега используют HTTP-заголовок X-Robots-Tag: noindex.
Закрыл сайт в robots.txt, но он всё равно в поиске. Почему?
robots.txt запрещает обход, но не удаляет уже проиндексированные страницы. Если сайт попал в индекс раньше, Disallow его оттуда не выкинет — робот просто перестанет обновлять данные. Чтобы убрать страницы, поставьте meta noindex (и не закрывайте их при этом в robots.txt, иначе робот не увидит тег), а затем ускорьте удаление через инструмент удаления URL в Яндекс.Вебмастере или Google Search Console.
Как закрыть сайт только от Google или только от Яндекса?
В robots.txt задайте правило для конкретного робота: User-agent: Googlebot и Disallow: / закроет сайт только от Google, User-agent: Yandex и Disallow: / — только от Яндекса. В meta-теге можно указать имя робота: <meta name="googlebot" content="noindex"> закроет страницу только для Google. Остальные поисковики продолжат индексировать сайт.
Как проверить, что сайт закрыт от индексации?
Откройте ваш-сайт.ru/robots.txt в браузере и проверьте директивы. Meta noindex видно в исходном коде страницы (Ctrl+U, ищите тег robots). HTTP-заголовок X-Robots-Tag проверяют инструментом проверки ответа сервера — он покажет все заголовки ответа. В Яндекс.Вебмастере есть раздел «Анализ robots.txt», где можно ввести URL и увидеть, разрешён ли обход.
Под рукой: генератор robots.txt и проверка ответа сервера — собрать файл и убедиться, что noindex-заголовок реально отдаётся.