Что файл делает и чего не делает
Разница между обходом и индексацией — источник большинства ошибок в этой теме.
| Задача | robots.txt | Метатег noindex | Авторизация |
|---|---|---|---|
| Не тратить обход на служебные разделы | да | нет | да |
| Убрать страницу из выдачи | нет | да | да |
| Скрыть содержимое от посторонних | нет | нет | да |
| Не отдавать содержимое конкретному боту | да, если бот соблюдает | нет | да |
Вторая строка — та самая ловушка. Закрытая в robots страница остаётся кандидатом на попадание в индекс: поисковик знает её адрес из ссылок и может показать запись без описания, потому что содержимое он не читал.
Базовые директивы
User-agent: * # к какому роботу относится блок
Disallow: /search/ # что не обходить
Allow: /search/help/ # исключение из запрета
Sitemap: https://site.ru/sitemap.xml
Разбор по частям:
User-agent открывает блок правил. Звёздочка — все роботы. Имя конкретного бота — правила только для него, причём такой блок полностью заменяет общий для этого бота, а не дополняет его. Это частая ошибка: прописали персональный блок и потеряли общие запреты.
Disallow запрещает обход по префиксу пути. /search/ закрывает и /search/, и всё, что начинается с этой строки.
Allow делает исключение внутри запрещённой ветки.
Sitemap указывает адрес карты сайта — эта директива не привязана к блокам и действует глобально.
Что закрывают обычно
Результаты поиска по сайту, страницы сортировки и фильтров с параметрами, корзину и оформление заказа, служебные каталоги, версии для печати, бесконечную пагинацию.
Общий принцип: закрывают то, что не должно ранжироваться и при этом создаёт много адресов. Экономия обхода — основная польза файла, и она напрямую связана с индексацией важных страниц: чем меньше ресурса уходит на мусор, тем чаще обходится нужное.
Доступ для ИИ-краулеров
Отдельная тема, где легко навредить, скопировав чужой список блокировок. Боты нейросетей делятся на три группы с разными задачами.
| Группа | Примеры | Что даёт доступ |
|---|---|---|
| Обучение моделей | GPTBot, ClaudeBot, Google-Extended, CCBot | Попадание в обучающие данные будущих версий |
| Поиск для ответов | OAI-SearchBot, PerplexityBot, Claude-SearchBot | Цитаты со ссылками в ответах прямо сейчас |
| Переход по действию пользователя | ChatGPT-User, Perplexity-User | Открытие страницы по конкретному запросу человека |
Типичная ошибка — открыть первую группу и считать задачу решённой. Цитаты в ответах даёт вторая. Подробный разбор механики — в статье про попадание в ответы нейросетей.
Закрыли CSS и JS. Робот не может отрисовать страницу и оценивает её неверно. Стили и скрипты должны быть открыты.
Персональный блок затёр общий. Правила для Yandex не наследуют запреты из блока * — их нужно повторить.
Закрыли раздел вместо удаления из индекса. Страницы остались в выдаче, но без описания и без возможности их оттуда убрать.
Файл отдаёт 404 или 500. Часть роботов при недоступности файла трактует это как запрет на обход всего сайта.
Перечислили в файле приватные пути. Получилась публичная карта скрытого.
Как проверить
Открыть site.ru/robots.txt в браузере — файл должен отдаваться как обычный текст. Дальше сверить: не закрыты ли разделы, которые должны ранжироваться, доступны ли стили и скрипты, указан ли sitemap.
Для проверки конкретного бота удобно запросить страницу с его именем в заголовке:
curl -s -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://site.ru/
Ответ 200 означает, что сервер отдаёт содержимое этому агенту. Обратите внимание: это проверка серверных ограничений, а не директив robots.txt — их соблюдение остаётся на совести робота.
Какое правило сработает, если подходит сразу несколько
Порядок строк в файле роли не играет. Побеждает правило с самым длинным совпадающим префиксом пути, а при равной длине — разрешающее.
User-agent: *
Disallow: /catalog/
Allow: /catalog/sale/
Disallow: /catalog/sale/print/
| Адрес | Что применится | Почему |
|---|---|---|
/catalog/ | Запрет | Совпал единственный подходящий префикс |
/catalog/shoes/ | Запрет | Разрешающих правил под этот путь нет |
/catalog/sale/ | Разрешение | Совпадение с Allow длиннее, чем с запретом |
/catalog/sale/tent/ | Разрешение | Наследует тот же более длинный Allow |
/catalog/sale/print/ | Запрет | Самый длинный из трёх совпавших префиксов |
/catalog?sort=price | Ничего | Запрет записан со слешем, а здесь его нет |
Последняя строка — источник тихих ошибок. Disallow: /catalog/ и Disallow: /catalog закрывают разные множества адресов: вариант без слеша захватит ещё и /catalog-old/, и /catalog.php, а вариант со слешем пропустит /catalog?sort=price.
Спецсимволов два. Звёздочка внутри пути заменяет любую последовательность, знак доллара обозначает конец адреса. Disallow: /*? закрывает все адреса с параметрами, Disallow: /*.pdf$ — только файлы с этим расширением, не задевая /pdf-guide/.
Границы действия файла
Файл действует на один хост и только из корня. Всё, что выходит за эту рамку, к нему отношения не имеет.
Поддомен — отдельный сайт. Правила основного домена на него не распространяются, и наоборот: у поддомена должен быть собственный файл в собственном корне. Забытый поддомен с тестовой копией сайта — типовой источник дублей.
Протокол и порт входят в адрес хоста. Версии на HTTP и HTTPS читаются как разные адреса файла, и после переезда на защищённый протокол правила должны быть доступны по новому.
Файл в подкаталоге игнорируется целиком. /blog/robots.txt не действует ни на что: робот запрашивает только корневой адрес.
Регистр пути значим. /Catalog/ и /catalog/ для сопоставления — разные строки, а не одна.
Не-ASCII символы сравниваются в процентном кодировании. Правило с кириллическим путём, записанное как есть, может не совпасть с тем, что фактически запрашивает робот.
Ответ сервера важнее содержимого. Если по адресу файла отдаётся ошибка сервера, часть роботов трактует это как временный запрет на обход всего сайта. Отсутствие файла с кодом 404, наоборот, читается как «ограничений нет».
Правку внесли, а поведение не изменилось
Между изменением файла и изменением обхода проходит время: робот перечитывает robots.txt не при каждом запросе, а со своей периодичностью. Первое действие после правки — сверить содержимое с тем, которое видит поисковая система в инструменте проверки, а не в браузере.
Страница закрыта в файле, но остаётся в выдаче. Запрет останавливает обход, а не индексирование: адрес попал в базу по ссылкам. Открыть страницу для обхода, поставить noindex и дождаться повторного захода робота.
Раздел открыт, но не обходится. Либо совпал более длинный запрет из другого блока, либо страница закрыта не файлом, а метатегом, заголовком X-Robots-Tag или ответом сервера. Проверять надо код ответа и заголовки, а не один только файл.
Правила видны в браузере, но не применяются. Файл отдаётся с типом text/html, через редирект или лежит в разных версиях на разных протоколах. Отдаваться он должен как обычный текст по прямому адресу нужного хоста.
После правки резко упал обход. В новую маску попало больше, чем планировалось, — почти всегда из-за звёздочки в середине пути. Сравнить списки обойдённых адресов до и после и сузить правило.
Раздел, закрытый по ошибке, возвращается в обход не мгновенно: роботу нужно перечитать файл и заново дойти до адресов по ссылкам. Ускоряет возврат карта сайта с актуальными датами изменения и ссылки на восстановленный раздел с тех страниц, которые обходятся часто.
Спорное место
robots.txt — редкий случай, когда простота формата вредит. Файл выглядит как настройка доступа, ведёт себя как вежливая просьба и при этом публично документирует структуру сайта.
Из-за этого на него возлагают задачи, которых он не решает: защиту данных, удаление из индекса, борьбу с парсерами. Все три требуют других инструментов. Полезно относиться к файлу узко — как к способу не тратить обход на бесполезные адреса, и не более того.
Частые вопросы
Как закрыть страницу от поиска правильно?
noindex на самой странице, оставив её открытой для обхода. Робот должен зайти и прочитать указание. После того как страница выпала из индекса, её можно дополнительно закрыть в robots.txt — но чаще этого уже не требуется.Обязателен ли robots.txt?
Можно ли скрыть через robots.txt конфиденциальный раздел?
Что будет, если закрыть весь сайт?
Disallow: / для всех агентов останавливает обход. Страницы, уже попавшие в индекс, выпадут не сразу и не гарантированно: без обхода поисковик не увидит изменений и какое-то время будет показывать старые данные.Нужно ли закрывать сайт от ИИ-краулеров?
Источники
- Стандарт исключений для роботов — Wikipedia