Тестовая копия правильно запрещает весь обход, но при релизе тот же robots.txt попадает на рабочий домен. Проблема находится в настройках рабочего и тестового сайтов, а не в оформлении файла. Проверка должна обращаться к публичному адресу после сборки и очистки нужного кеша.
Какие правила нужны каждому домену
Правила robots.txt действуют для конкретных хоста, протокола и порта. Официальная документация.
В небольшом проекте может быть три адреса: example.com, staging.example.com и случайный preview-домен. Рабочий сайт нужен посетителям и поиску, тестовая копия — команде. Перечислите разделы рабочего сайта, которые должны быть доступны роботу, и ограничения тестовой копии. Preview может содержать клиентские данные, поэтому сначала решите вопрос авторизации. Не превращайте проверку в универсальное условие «robots не должен содержать Disallow»: для тестового окружения ограничение бывает намеренным. Проверяйте оба адреса: рабочий каталог должен оставаться открытым для обхода, а тестовая копия — сохранять выбранные ограничения.
Рабочий сайт, тестовая копия и кеш
| Где проверяем | Что размещено | Какие ограничения нужны | Что проверить после релиза |
|---|---|---|---|
| Рабочий сайт | Публичные страницы | Обход нужных путей | Проверить ответ после релиза |
| Тестовый сайт | Тестовый контент | Отдельные ограничения | Не копировать на рабочий сайт |
| Preview | Временная сборка | Проверить политику доступа | Не считать домен рабочим |
| CDN кеш | Старая конфигурация | Сверить тело ответа | Очистить нужный ключ |
Откуда сервер берёт robots.txt
Попросите разработчика проверить возможные источники по одному: файл проекта, систему управления сайтом (CMS), промежуточный сервер перед приложением и CDN — сеть доставки страниц и файлов. Не переименовывайте файлы наугад. Сначала сравните публичное тело с тем, что создаёт предполагаемый источник. В некоторых системах настройка окружения применяется во время сборки, поэтому переменная запуска уже не изменит встроенный файл. В других robots генерируется при запросе, а CDN сохраняет его. Если файл встроен при сборке, после изменения настройки нужна новая сборка. Если его создаёт CMS при запросе, измените её настройку и очистите кеш именно /robots.txt.
Разработчик может сохранить публичный robots.txt следующей командой в терминале.
curl -sS -D headers.txt -o response.html 'https://example.com/robots.txt'Сохранённый response.html здесь содержит текст robots.txt, несмотря на расширение файла. Сравните его со сборкой и настройкой CMS. Статус в headers.txt должен относиться к самому файлу, а не к странице входа или ошибке. Замените example.com своим доменом; этот GET не изменяет настройки сайта. Справка curl.
Повторите запрос для тестового домена, сохранив ответ в другие файлы. На рабочем сайте проверьте неожиданный Disallow: /; на тестовом — его намеренное наличие и реальную защиту доступа.
Задайте среду в настройке генератора
Поручите разработчику явно перечислить рабочий и тестовые домены в настройке генератора и проверить это правило при публикации. Наличие слова staging в произвольном заголовке Host не должно само выбирать режим: этот заголовок передаёт имя запрошенного домена. При неизвестном имени сборка должна остановиться или использовать отдельно выбранное правило для тестовой копии, чтобы рабочий сайт случайно не получил запрет. Если рабочих доменов несколько, задайте каждый отдельно. При добавлении домена сначала выберите его режим, затем проверьте получившийся файл.
Проверьте ответ после очистки кеша
Очистка CDN помогает получить новую версию, но не изменяет сам генератор. После очистки снова запросите файл и сравните его содержимое с ожиданием. Посмотрите Age, Cache-Control и доступные диагностические заголовки кеша, если они есть. Не утверждайте, что отсутствие Age означает отсутствие кеша: конкретная инфраструктура может не выдавать такой заголовок. Если ответ снова старый, проверьте происхождение файла и ключ кеша. Удаление всех кешей сайта редко требуется для исправления одного текстового маршрута и затрудняет диагностику.
Проверьте оба домена после публикации
Откройте обычные URL /robots.txt без случайных параметров. Рабочий файл разрешает нужные публичные разделы и содержит правильный адрес Sitemap, если эта директива используется; тестовый сохраняет свои ограничения. Повторная сборка не должна снова копировать тестовый файл на рабочий домен.
Читайте также: Что проверить на сайте сразу после публикации изменений и 7 ошибок в robots.txt, которые убивают индексацию. Проверки сайта доступны на странице технического аудита reChecker.