Главная Статьи SEO

Как закрыть тестовый сайт от индексации и посторонних

Многоуровневая защита тестового сайта от роботов и посторонних

Тестовый сайт нужен разработчикам, редакторам и заказчику, но не поисковым роботам и случайным посетителям. На staging могут находиться будущие цены, незаконченные тексты, копия каталога и служебные функции. Поэтому задача шире, чем «не показывать страницы в Яндексе»: нужно сначала ограничить доступ на уровне сервера или сети, а уже затем добавить поисковые директивы как страховку.

Главный барьер — HTTP-аутентификация, VPN, allowlist IP, частная сеть либо доступ через корпоративный шлюз. Неавторизованный клиент не должен получать содержимое страницы. Meta robots noindex и X-Robots-Tag полезны вторым слоем на случай ошибочного снятия защиты, но не обеспечивают конфиденциальность. Любой человек, знающий URL, может открыть публичную страницу с noindex.

robots.txt тоже не является замком. Он управляет обходом поддерживающих стандарт роботов, но не запрещает людям и недобросовестным сканерам загружать сайт. Более того, если закрыть весь стенд через Disallow, поисковик не сможет прочитать noindex внутри страниц. В итоге известный URL иногда остаётся видимым без описания. Правильная схема строится слоями и регулярно проверяется снаружи.

Какие риски есть у публичного staging

Первый риск — поисковые дубли. Если тестовый домен содержит полную копию продакшена, робот может найти оба набора URL. Canonical на рабочую версию помогает выразить предпочтение, но не заменяет ограничение доступа и не гарантирует мгновенную склейку. Если в шаблоне окажется self-canonical staging, поисковик получит конкурирующие сигналы. Общая механика подробно описана в статье про canonical и дубли.

Второй риск — утечка данных. На стенд нередко копируют клиентские записи, заказы, внутренние комментарии, API-ключи, непубличные продукты и будущие акции. Noindex обращён к поисковому роботу и ничего не сообщает злоумышленнику. Даже если страница не появилась в поиске, открытая административная функция или резервный файл остаются доступны по прямому адресу.

Третий риск — неверные действия внешних систем. Тестовая форма может отправить письмо настоящему клиенту, preview-страница — вызвать платёжный webhook, а аналитика — смешать внутренние визиты с продакшеном. Защита должна сочетаться с отдельными ключами, тестовыми интеграциями и маркировкой окружения. Один пароль не исправит ошибочно подключённый боевой платёжный шлюз.

Даже закрытый стенд заполняйте минимально необходимыми обезличенными данными. Контроль доступа снижает вероятность выдачи содержимого, а минимизация данных уменьшает ущерб при ошибке конфигурации. Эти меры дополняют друг друга: безопасный набор данных не заменяет авторизацию, а пароль не оправдывает копирование боевой базы.

Наконец, стенд может попасть в публичные источники случайно: сотрудник отправил ссылку в открытый тикет, браузер передал Referer, внешний сервис снял скриншот, библиотека загрузила ресурс с тестового домена, а отчёт сохранился в общем облаке. Полагаться на «адрес никто не знает» нельзя. Google прямо отмечает, что секретный URL трудно сохранять неизвестным, если сайт взаимодействует с внешними ресурсами.

Почему доступ — главный барьер

Надёжная защита проверяет клиента до выдачи содержимого. Для небольшой команды это часто HTTP Basic Auth поверх HTTPS. Для компании с инфраструктурой — VPN, identity-aware proxy, SSO или приватная сеть. Дополнительно можно разрешить корпоративные IP и запретить остальные. Выбор зависит от пользователей, автоматических тестов и чувствительности данных, но принцип один: неизвестный запрос не получает HTML, файлы и API.

Сетевой или серверный барьер решает сразу две задачи. Робот не может обойти и проиндексировать контент, а посторонний человек не может его прочитать. Noindex решает только вторую половину поисковой задачи — просит поддерживающий директиву сервис не показывать уже доступный документ. Поэтому начинать следует не с метатега, а с модели доступа.

Определите, кому действительно нужен стенд: разработчикам, тестировщикам, редакторам, заказчику, автоматическому CI и, возможно, внешнему подрядчику. Для каждого назначьте способ входа и срок. Общая учётная запись, написанная в чате год назад, быстро превращается в бессрочный публичный пароль. Лучше отдельные пользователи, короткоживущие токены или доступ через корпоративную идентичность с журналом.

Стенд должен работать только по HTTPS. Basic Auth кодирует, но не шифрует логин и пароль; защиту канала обеспечивает TLS. Не размещайте секреты в адресной строке и не используйте исторический формат https://user:password@host/: современные браузеры ограничивают его, URL попадает в историю и журналы. Сертификат и DNS тестового домена контролируются так же внимательно, как рабочие; основы записей разобраны в материале про DNS.

Проверьте, что отказ действительно происходит до генерации страницы. Ответ 401 или 403 не должен содержать фрагменты меню, заголовок будущего материала, JSON-LD, отладочный стек или комментарии шаблона. Одинаковое правило применяется к запросам GET и HEAD, альтернативным hostname, версиям со слешем и без него. Иначе робот может получить метаданные по одному маршруту, хотя главная визуально закрыта.

Не кешируйте авторизованный HTML как публичный объект. CDN и reverse proxy должны учитывать заголовок авторизации и принятую политику кеша, а после смены правил старый публичный ответ очищается. Проверку выполняют в чистой сессии и из внешней сети: открытая вкладка сотрудника уже содержит credentials и создаёт ложное впечатление, что страницу видит любой посетитель.

Доступ подрядчика или заказчика оформляйте как временный. В журнале достаточно видеть пользователя, время и результат входа; пароль и токен туда попадать не должны. По завершении приёмки отзовите учётную запись и проверьте отказ старого доступа. Такой регламент важен и для SEO: забытый бессрочный preview чаще оказывается публичным после следующей перенастройки инфраструктуры.

Рабочая иерархия: частная сеть или серверная аутентификация блокирует доступ; noindex страхует от случайной публикации; проверки ссылок и конфигурации уменьшают вероятность утечки; мониторинг замечает снятую защиту.

Как работает HTTP-аутентификация

При HTTP-аутентификации сервер сначала отвечает неавторизованному клиенту кодом 401 Unauthorized и заголовком WWW-Authenticate. Браузер показывает запрос логина и пароля, затем повторяет запрос с заголовком Authorization. Только после успешной проверки сервер отдаёт страницу. Это принципиально отличается от HTML-формы входа, за которой забыли закрыть статические файлы или API.

В Nginx доступ обычно задают на уровне нужного server или location директивами auth_basic и auth_basic_user_file. В Apache используют AuthType, AuthName, файл учётных данных и Require valid-user. Конкретная конфигурация зависит от размещения, поэтому её проверяют на всех маршрутах, а не копируют из случайного примера. Файл паролей хранится вне публичного каталога, пароли — в поддерживаемом хешированном формате.

Защищайте весь hostname, включая корень, HTML, медиа, сгенерированные файлы и служебные пути. Частая ошибка — поставить пароль на /admin/ или главную, но оставить доступными /uploads/, /api/, PDF и адреса preview. Другой промах — исключить из правила healthcheck слишком широкую маску, через которую становится доступно приложение.

Для CI создайте отдельную учётную запись с минимальными правами и храните секрет в защищённом хранилище сборочной системы. Не печатайте Authorization в логах. Регулярно меняйте пароль, особенно после завершения работы подрядчика. Если данные чувствительные, Basic Auth может быть недостаточен: используйте SSO, MFA, VPN и сетевую сегментацию. Обзор заголовков защиты есть в статье о заголовках безопасности, но они дополняют контроль доступа.

VPN, IP-списки и частная сеть

Allowlist IP прост для офиса с постоянным адресом: веб-сервер принимает запросы только из утверждённых сетей. Недостаток — удалённые сотрудники, мобильные подключения и облачный CI меняют адреса. Если список обновляют вручную, люди начинают просить временные широкие исключения и забывают их убрать. Доступ через корпоративный VPN даёт сотруднику стабильную доверенную сеть и централизованный отзыв.

Частный hostname, доступный только внутри VPC или через туннель, уменьшает внешнюю поверхность ещё сильнее. Однако «нет публичной DNS-записи» само по себе не является полной защитой: сервер может отвечать по IP, запись может сохраниться в истории, а ошибочная конфигурация — открыть балансировщик наружу. Нужны firewall и проверка фактического маршрута из внешней сети.

Identity-aware proxy удобен для редакторов и заказчиков: человек проходит корпоративную авторизацию, а приложение получает подтверждённую идентичность. Можно назначать группы, MFA, сроки и журнал. Такой слой сложнее простой Basic Auth, зато управляется централизованно. Для временного внешнего доступа предпочтительнее индивидуальное приглашение с окончанием срока, а не один общий пароль.

Комбинировать меры можно: VPN как основной путь сотрудников, отдельная аутентификация для CI и noindex на самих страницах. Не создавайте комбинацию, которую невозможно проверить и поддерживать. У каждого слоя должен быть владелец, описание отказа и сигнал мониторинга. Если IP-фильтр отключили во время диагностики, система должна напомнить вернуть его, а не надеяться на память администратора.

Как использовать noindex как страховку

На всех HTML-страницах стенда добавьте <meta name="robots" content="noindex,nofollow"> либо хотя бы noindex. Для файлов и ответов без HTML используйте X-Robots-Tag: noindex. Лучше задавать заголовок на уровне окружения, чтобы он не зависел от конкретного шаблона. Детальная разница директив разобрана в статье про noindex и nofollow.

Этот слой страхует момент, когда инженер случайно снимет аутентификацию: робот сможет загрузить страницу и увидит запрет индексации. Пока сервер возвращает 401 или закрыт сетью, поисковик не получает HTML и не читает метатег — это нормально, потому что более сильный барьер уже не даёт контент. Нельзя делать обратный вывод, будто пароль мешает noindex и поэтому его следует убрать.

Не переносите страховочный заголовок в продакшен. Конфигурация должна зависеть от окружения, а выпускной тест — проверять, что рабочие страницы не получили noindex. Массовая утечка директивы способна удалить полезные URL из поиска после переобхода. Перед запуском проверьте HTML и HTTP-заголовки нескольких шаблонов; после запуска используйте инструменты проверки индексации, описанные в статье о проверке страниц в поиске.

Если staging уже попал в результаты, сначала восстановите надёжный контроль и решите, нужно ли поисковику увидеть noindex. Для удаления известных URL иногда временно оставляют их доступными роботу с noindex, не раскрывая чувствительные данные: например, отдают безопасную пустую оболочку. Такое действие требует отдельного плана. Не публикуйте секретный контент ради ускорения удаления и не закрывайте его Disallow одновременно с noindex.

Почему robots.txt недостаточно

Robots.txt — добровольный протокол управления обходом. Запись Disallow: / говорит добросовестному роботу не загружать страницы, но сервер по-прежнему отдаёт их любому посетителю. URL может быть найден во внешней ссылке и появиться в результате без содержимого. Поэтому Google прямо предупреждает: robots.txt не предназначен для сокрытия страницы из поиска; для закрытого контента нужен пароль или иной контроль доступа.

Есть и конфликт с noindex. Поисковик соблюдает Disallow и не загружает HTML, следовательно, не видит meta robots. Команда смотрит в код, находит noindex и считает проблему решённой, но директива недоступна роботу. Это одна из причин разделять цели: пароль запрещает выдачу контента, noindex страхует публичность, robots.txt управляет нагрузкой и ненужными маршрутами.

Не копируйте тестовый robots.txt в рабочую среду. Если конфигурация хранится одним файлом и меняется вручную, строка Disallow может приехать вместе с релизом. Генерируйте файл по окружению и добавьте автоматическую проверку: продакшен не закрывает важные разделы, staging не зависит от robots.txt как от единственного барьера. Правила синтаксиса и тестирования собраны в руководстве по составлению robots.txt.

Опасная комбинация: публичный staging + Disallow: / + noindex внутри HTML. Робот не читает noindex, человек открывает сайт, а URL может остаться известным поиску. Закройте сам доступ.

Ссылки, Sitemap, canonical и другие утечки

Даже закрытый стенд не должен рассылать свои адреса. Проверьте шаблоны писем, XML-фиды, Open Graph, JSON-LD, RSS, API, экспорт CSV и уведомления. Ссылка из тестового письма может попасть внешнему получателю, а webhook — в журнал партнёра. Автоматически ищите hostname staging в собранных артефактах и продакшен-коде.

Не добавляйте тестовые URL в рабочий Sitemap и не отправляйте их через IndexNow. На самом staging Sitemap тоже не нужен внешнему роботу; если он используется тестами, он остаётся за авторизацией. При публикации нового сайта создаётся рабочая карта только с каноническими доступными адресами. Организация крупных файлов описана в материале про Sitemap больших сайтов.

Canonical тестового сайта можно направлять на будущий рабочий URL для проверки шаблона, но не считать это защитой. Для новых страниц цель может ещё не существовать, а ошибка переменной окружения способна поставить staging canonical в продакшен. Контракт релиза должен отдельно проверять оба направления: тестовый hostname не встречается на рабочем сайте, а рабочий домен не ведёт пользователя на стенд.

Отключите боевые счётчики и инструменты сессий либо используйте отдельные тестовые проекты. Иначе URL и содержимое могут уйти во внешнюю аналитику, тепловую карту, мониторинг ошибок или рекламную систему. Также запретите реальные транзакции, почтовые рассылки и индексирующие уведомления. Проверка на вирусы и утечки секретов не является SEO-задачей, но открытый стенд повышает риск; базовые шаги есть в статье о проверке сайта на вредоносный код.

Как закрыть ресурсы, API и preview

HTML — лишь верхушка. Робот и человек могут открыть изображения, PDF, JSON, source map, выгрузку базы и endpoint GraphQL напрямую. Защита должна применяться к hostname целиком до маршрутизации приложения. Если публичный CDN используется одновременно для staging и продакшена, разделите bucket, ключи и правила. Не загружайте непубличные изображения под угадываемыми адресами на открытый домен.

Preview-ссылки часто специально предназначены для внешнего согласования. Делайте их подписанными, ограниченными по времени и правам. Токен не должен попадать в Referer к сторонним ресурсам; настройте подходящую Referrer-Policy и не подключайте лишние скрипты. После согласования ссылка истекает. Удаление одной записи должно отзывать её preview, а не оставлять вечную копию.

API отвечает тем же правилам доступа, что интерфейс. Нельзя полагаться на то, что endpoint неизвестен или вызывается только JavaScript. Проверьте запрос без credentials, с неверными и с валидными; убедитесь, что CORS не открывает данные произвольному источнику. Тестовые ключи не должны иметь права на боевую инфраструктуру.

Особое внимание — архивам и резервным файлам: .zip, дампам, старым сборкам, source map и каталогам загрузки. Веб-сервер не должен публиковать их по умолчанию. После завершения проекта временный hostname удаляют или сохраняют под управляемой защитой. Заброшенный стенд со старой CMS становится удобной точкой атаки, даже если его давно нет в поиске.

Проверьте service worker и офлайн-кеш. Сотрудник мог открыть стенд до установки защиты, а браузер продолжит показывать сохранённую оболочку после закрытия. Это не означает, что сервер публичен, но мешает честному тесту и может сохранить устаревшие данные на общем устройстве. Для приёмки используйте новый профиль или очищенное хранилище, а область действия service worker ограничивайте тестовым hostname.

Составьте небольшую карту поверхности: HTML, изображения, документы, API, WebSocket, preview, почтовые ссылки, фиды, CDN и хранилище объектов. Рядом укажите ожидаемый ответ без доступа, способ авторизации и владельца. Карта полезнее проверки одной главной страницы: новый endpoint сразу получает правило, а внешний тест знает, что добавить в выборку.

Наконец, ищите тестовый hostname в рабочем репозитории и сгенерированном продакшен-HTML перед каждым релизом. Нулевое совпадение не доказывает полной безопасности, но быстро ловит canonical, изображения, API-адреса и ссылки, случайно перенесённые между окружениями.

Для временно открытого внешнего согласования заранее определите окно и автоматическое закрытие. Мониторинг проверяет доступ не из корпоративной сети, а из независимой точки, поэтому замечает ошибку firewall или прокси. Сигнал должен срабатывать не только при ответе 200: редирект на публичную форму входа, файл без защиты или неожиданное исчезновение X-Robots-Tag тоже требуют разбора. После закрытия повторно запросите те же HTML, PDF, изображения и API без cookie и токена. Такой контроль подтверждает итоговое состояние, а не только успешное выполнение команды конфигурации.

Список тестовых hostname тоже должен быть учтён: владелец, назначение, дата последней проверки и срок пересмотра. Неиспользуемое окружение либо выключают вместе с DNS и хранилищем, либо продолжают защищать и обновлять. Самая уязвимая копия часто не текущий staging, а забытый демонстрационный поддомен, который больше никто не считает своей ответственностью.

Четыре слоя защиты тестового сайта Сначала сеть или аутентификация не дают получить контент. Затем noindex страхует ошибочное открытие, контроль утечек не выпускает ссылки, а мониторинг проверяет сохранность защиты. Защита строится снаружи внутрь 1. Сеть / HTTP-аутентификация 2. Noindex как страховка 3. Контроль ссылок и интеграций 4. Мониторинг и внешний тест robots.txt не является ни внешним слоем доступа, ни защитой данныхЕсли один слой снят случайно, следующий уменьшает последствия
Самый сильный слой не отдаёт содержимое неавторизованному клиенту; поисковые директивы лишь дополняют его.

Как проверять защиту автоматически

Проверку выполняют из сети, которая не имеет специального доступа. Запрос без credentials к главной, случайной внутренней странице, файлу, API и preview должен получить ожидаемый отказ или не установить соединение. Для Basic Auth проверяют 401 и WWW-Authenticate; для IP-ограничения возможен 403 либо сетевой отказ согласно принятой политике. Важно не требовать один код от разных механизмов, а зафиксировать ожидаемое поведение.

Затем авторизованный тест загружает представители шаблонов и проверяет noindex в HTML либо X-Robots-Tag. Это не попытка дать пароль поисковику — тест выполняет ваша система. Он подтверждает страховочный слой, корректность страницы и отсутствие staging URL в ссылках на внешние домены. Отдельно ищут рабочие аналитические идентификаторы, платёжные ключи и адреса реальных webhook.

Запускайте внешний тест после каждого изменения инфраструктуры, DNS и ingress, а также по расписанию. Уведомление должно срабатывать, если страница неожиданно отвечает 200 без авторизации, исчез заголовок noindex, сертификат истёк или появился новый публичный hostname. Данные веб-сервера помогают увидеть массовые запросы; подход к журналам раскрыт в статье об анализе логов сервера.

Проверяйте защиту до загрузки копии данных. Порядок «сначала развернуть базу, потом поставить пароль» создаёт окно утечки. Инфраструктура поднимает hostname закрытым, тест подтверждает барьер, затем выполняется миграция обезличенного набора. Автоматический pipeline должен падать, если внешний запрос получил содержимое.

Числовой пример: аудит четырёх тестовых окружений

У компании обнаружились четыре hostname с 3 480 доступными URL: dev содержал 620 адресов, staging — 1 840, preview — 780, старый стенд — 240. Проверка суммы: 620 + 1 840 + 780 + 240 = 3 480. Пароль был только на главной staging, но внутренние страницы и изображения открывались напрямую. Dev закрывался Disallow, preview имел noindex, старый стенд не обслуживался командой.

Во внешних поисковых результатах нашли 74 URL: 52 со старого стенда, 16 из preview и 6 из dev. Это не означало, что остальные адреса безопасны: прямой запрос возвращал содержимое всех 3 480. В Sitemap рабочего сайта тестовых ссылок не было, но 31 адрес утёк через тестовые письма и публичные задачи, а 12 изображений загружались со staging на рабочие страницы.

Команда закрыла dev и staging корпоративным шлюзом, preview получил подписанные ссылки сроком 72 часа, старый стенд вывели из эксплуатации после сохранения необходимых артефактов. На HTML и файлы добавили X-Robots-Tag noindex как страховку. Для проверки выбрали 120 ресурсов: 60 HTML, 20 изображений, 20 документов и 20 API-запросов. Сумма: 60 + 20 + 20 + 20 = 120.

Без авторизации все 120 тестов получили ожидаемый отказ; с разрешённым доступом 60 HTML-страниц ответили 200 и содержали noindex. В коде продакшена заменили 12 ссылок на изображения, а 31 внешнюю утечку классифицировали и отозвали там, где это было возможно. Через два переобхода число найденных тестовых URL отслеживали отдельно; защиту не снимали ради ускорения удаления чувствительных страниц.

ОкружениеURL до аудитаОсновной барьер послеДополнительная мера
Dev620Корпоративный шлюзX-Robots-Tag noindex
Staging1 840Шлюз и персональный доступПроверка всех маршрутов
Preview780Подписанные ссылки на 72 часаМинимум внешних ресурсов
Старый стенд240Выведен из эксплуатацииУдалены DNS и публичные файлы

Как безопасно открыть сайт перед запуском

Открытие — отдельная операция, а не снятие всех ограничений одной кнопкой. Сначала разворачивают продакшен с правильным доменом, сертификатом, конфигурацией и обезличенными служебными следами. Затем проверяют коды, canonical, robots meta, Sitemap, ссылки и формы через временный внутренний маршрут. Только после успешной приёмки публичному трафику разрешают доступ.

На рабочем сайте должны исчезнуть noindex и тестовые X-Robots-Tag, но защита административных и preview-путей сохраняется. Robots.txt генерируется для продакшена отдельно и не содержит случайного Disallow: /. Canonical указывает на рабочие канонические URL. Контроль при структурных изменениях удобно сверить с руководством по безопасному переезду сайта.

После запуска не удаляйте staging-защиту: стенд продолжит использоваться для следующих версий. Обновите тестовые ключи, очистите экспорт персональных данных и задайте срок хранения сборок. Публичные preview текущего релиза отзовите. Если рабочие URL новые или существенно изменились, сообщайте о них поисковикам только после проверки; IndexNow описан в отдельном материале об ускорении обнаружения страниц.

Составьте короткий акт открытия: время, версия, кто снял внешний барьер с продакшена, кто подтвердил индексируемость, какие URL проверены и какие ограничения остались. Через час и сутки повторите внешний тест. Для большого сайта добавьте важные адреса в мониторинг. Защита тестовой среды и индексируемость рабочей — два разных инварианта, и оба должны проверяться постоянно.

Чек-лист закрытого staging

  • Контент недоступен извне без HTTP-аутентификации, VPN или сетевого разрешения
  • Весь hostname, включая файлы и API, покрыт одним правилом доступа
  • HTTPS включён, учётные записи индивидуальны и могут быть отозваны
  • Noindex или X-Robots-Tag настроен как дополнительная страховка
  • Robots.txt не считается защитой и не мешает продуманному удалению URL
  • Тестовые ссылки отсутствуют в продакшене, письмах, фидах и внешней аналитике
  • Внешняя автоматическая проверка замечает ответ 200 без авторизации

Официальные источники

Главный вывод

Тестовый сайт закрывают не одной поисковой директивой, а контролем доступа. HTTP-аутентификация, VPN, allowlist или частная сеть не позволяют неизвестному клиенту получить содержимое. Noindex добавляют как страховку от случайного открытия, а robots.txt используют только по его назначению — для управления обходом, помня, что Disallow мешает роботу прочитать noindex. Защита должна покрывать HTML, файлы, API, preview и интеграции, проверяться из внешней сети и сохраняться после запуска. Тогда staging остаётся рабочим инструментом команды, а не публичной копией сайта и источником утечек.

Частые вопросы

Достаточно ли добавить noindex на тестовый сайт?
Нет. Noindex просит поисковик не показывать доступную страницу, но не запрещает человеку открыть её по прямой ссылке и не защищает данные. Основным барьером должна быть HTTP-аутентификация, VPN, ограничение по сети или другой контроль доступа. Noindex полезен дополнительной страховкой.
Можно ли закрыть staging строкой Disallow в robots.txt?
Robots.txt управляет обходом добросовестных роботов, но не ограничивает людей и сторонние сканеры. Известный URL может остаться в поиске без описания. Кроме того, при Disallow робот не загрузит HTML и не увидит noindex. Поэтому robots.txt нельзя использовать как единственную защиту.
Что лучше: HTTP Basic Auth или ограничение по IP?
Выбор зависит от команды. Basic Auth удобен для распределённых пользователей, IP-список прост при стабильной офисной сети, а VPN или корпоративный шлюз дают централизованное управление. Меры можно сочетать. В любом случае нужен HTTPS, отзыв доступа и проверка всех маршрутов сайта.
Увидит ли поисковик noindex за паролем?
Нет, без учётных данных робот получит отказ и не загрузит HTML. Это ожидаемо: более сильный барьер уже не выдаёт контент. Noindex нужен как страховка на случай ошибочного снятия аутентификации. Не следует убирать пароль ради того, чтобы робот прочитал директиву.
Как удалить staging, если его страницы уже попали в поиск?
Сначала оцените чувствительность данных и восстановите надёжный контроль. Для безопасного публичного содержимого можно продумать временную отдачу noindex, чтобы робот увидел запрет, но нельзя раскрывать секреты ради переобхода. Удалите внешние ссылки, фиды и утечки, затем контролируйте результаты в сервисах вебмастера.
Что проверить при открытии нового сайта?
На продакшене должны отсутствовать тестовые noindex и X-Robots-Tag, canonical должен вести на рабочие URL, важные страницы — отвечать 200, а robots.txt и Sitemap соответствовать боевой среде. Одновременно staging остаётся закрытым. После запуска выполните внешний smoke-тест через час и сутки.