Как я собираю robots.txt и что им не закрываю

27.10.2026 · 8 мин чтения
Тёмная плита файла у основания геометрических блоков с коралловым ребром
Файл robots.txt я кладу в корень хоста и держу один на хост. В нём закрываю от обхода служебные пути и указываю адрес карты сайта. Запрет индексации этой строкой я не подменяю: страница, закрытая от обхода, всё ещё может всплыть по ссылке.

Куда я кладу файл

Имя пишу строчными буквами: robots.txt. Адрес прямой. Сначала протокол и хост, сразу за ними имя файла, без папки посередине. Файл лежит в корне, рядом с главной страницей этого хоста. Робот за правилами приходит именно сюда.
Хост с www и хост без www я считаю разными. Поддомен тоже другой хост, со своим корнем. У каждого свой файл. Правила с основного домена на поддомен сами не переезжают. Смотрю тот хост, на котором открыта страница, и файл беру у него.
Текст, положенный в папку раздела, правилами хоста не становится. Адрес, где перед именем файла стоит папка, робот для обхода сайта не берёт. Я открываю вариант, в котором после хоста сразу идёт robots.txt, и смотрю, что оттуда приходит.
Смотрю живой ответ по адресу файла. Робот читает то, что отдаёт хост. Файл может лежать в корне на хостинге. Его может отдавать и движок, если по этому адресу приходит текст правил. Мне подходит ответ, в котором я вижу сами строки. Если открывается главная или форма входа, по этому адресу правил нет. Страница ошибки тоже не текст правил: сначала добиваюсь, чтобы адрес отдавал сам файл. Если адрес перенаправляет на другой robots.txt, правлю текст на конце перехода.
АдресЧто читает робот
https://example.com/robots.txtФайл этого хоста
https://www.example.com/robots.txtФайл другого хоста
https://shop.example.com/robots.txtФайл поддомена
https://example.com/blog/robots.txtПапка, не корень хоста
Тёмные коридоры от одного блока, часть закрыта коралловыми планками
Правила читаются из корня хоста. Файл из папки раздела правилами хоста не служит.

Из чего я собираю строки

Секцию начинаю со строки User-agent. Звёздочка задаёт общие правила. Их читает робот, у которого своей секции нет. Когда одному роботу нужен другой набор, я открываю секцию с его именем и пишу правила там. Яндекс и Google свою секцию с общей не смешивают. Всё, что важно именно этому роботу, в секции со звёздочкой я не оставляю.
Дальше идут запреты и разрешения путей. Disallow называет начало адреса, куда роботу ходить не нужно. Пустой Disallow, когда после директивы пути нет, хост не закрывает: обход остаётся открытым. Строку, в которой путь состоит из одного слэша, я в файл не ставлю. Такой запрет закрывает хост целиком, вместе с публичными страницами и картой.
Allow добавляю, когда внутри уже закрытого пути есть файл, который роботу стоит забрать. Чаще всего это стили и скрипты, из которых на экране собирается страница. Разрешение делаю длиннее запрета: оно указывает на эти файлы и не открывает служебную папку целиком. Если на один адрес подходят и запрет, и разрешение, я рассчитываю на более длинное правило.
Sitemap пишу отдельной строкой. В ней полный адрес карты: протокол, хост и путь. Короткий путь без хоста я в эту строку не ставлю. Карт бывает больше одной, тогда и строк Sitemap больше. Саму карту в Disallow не кладу. Строка карты не отменяет запрет пути. В карту я ставлю адреса, которые роботу можно забирать, и в файле эти адреса не запрещаю.
Комментарий после знака решётки пишу себе. Робот эту часть строки пропускает. Так я помню, зачем закрыт путь, когда открою файл снова. Секции разных роботов разделяю пустой строкой, чтобы правила одной не прилипли к другой. Карту оставляю в конце файла один раз и в каждую секцию её не копирую.

Короткий рабочий вид

Ниже вид, с которого я начинаю, когда служебные пути уже известны. Домен в строке карты ставлю свой. Имена папок сверяю с сайтом и чужой список не вставляю как есть. Хост целиком здесь открыт. Закрыты служебные места. Стили и скрипты внутри админки разрешены точечно, если публичные страницы берут их оттуда.
  • User-agent: *
  • Disallow: /admin/
  • Disallow: /personal/
  • Disallow: /cart/
  • Disallow: /search/
  • Allow: /admin/*.css
  • Allow: /admin/*.js
  • Sitemap: https://example.com/sitemap.xml
Если своей админки по пути admin нет, строки про admin я меняю на реальные папки. Смысл примера простой. Служебное закрыто. Файлы оформления, которые нужны открытым страницам, доступны. Карта указана полностью. Главную, разделы каталога и статьи в запрет я не записываю: их роботу как раз нужно обойти.
Тёмная папка с коралловым внутренним краем на чёрном фоне
В файле несколько строк: кому правила, какие пути закрыты и где лежит карта.
СтрокаЗачем она мне
User-agentК какому роботу секция
DisallowКакой путь не обходить
AllowЧто открыть точнее запрета
SitemapГде лежит карта сайта

Какие пути закрываю от обхода

В Disallow я ставлю пути, которые не хочу отдавать роботу как страницы сайта. Это служебные места. Человек может открыть их по делу. Обходить их как разделы сайта роботу незачем. Перед строкой я сам открываю путь. Если по адресу раздел с товаром, услугой или статьёй, в запрет он не идёт.
  • Админка и системные каталоги движка.
  • Служебный каталог хостинга вроде cgi-bin, если он есть.
  • Вход, регистрация и личный кабинет.
  • Корзина и шаг оформления заказа.
  • Страница внутреннего поиска по сайту.
  • Версия страницы для печати.
Чужой готовый файл здесь легко промахивается. Папки называются иначе, и чужая строка либо ничего не закрывает, либо задевает живой раздел. Я дописываю путь только после того, как увидел его у себя. Чужой шаблон остаётся черновиком, пока я не сверил папки со своим сайтом.
Запрет сравнивается с началом адреса. Строка с путём admin и слэшем на конце относится ко всему, что с этого пути начинается. Слэш в конце оставляю специально. Без него можно зацепить страницу, у которой адрес лишь начинается с тех же букв и к админке не относится. Регистр в пути робот различает. Два написания одной папки разными буквами для него два разных начала, и я копирую путь так, как он открывается в браузере.
Стили, скрипты и картинки публичных страниц в запрет не ставлю. Иначе робот видит каркас без оформления, которое видит человек. Если такие файлы лежат внутри уже закрытой системной папки, их возвращает точный Allow, как в примере выше.
Параметры, которые не меняют саму страницу, в этот список запретов не переношу. Для них я ставлю директиву Clean-param. Какие имена туда писать, я уже разбирал отдельно.

Чем файл не заменяю запрет индексации

Файл управляет обходом. Он говорит роботу не заходить по пути. Запрет индексации той же строкой я не ставлю. Страница, закрытая в robots.txt, всё ещё может всплыть по ссылке: адрес роботу известен с другого сайта или с моей открытой страницы, даже если текст он не забрал. Как проверять noindex в коде страницы, я уже разбирал отдельно.
Секрет этим файлом я не прячу. Адрес robots.txt открыт любому, и закрытые пути в нём написаны обычным текстом. Кабинет и админку закрывает вход. Строка Disallow только просит робота туда не ходить.

Как я проверяю файл

Сначала открываю живой адрес файла на нужном хосте. На экране должны быть строки правил. Главная, форма входа или ошибка значат, что робот правил не получил. Сверяю и имя: это robots.txt, а не похожее слово в другом регистре и не файл в папке.
  1. Файл лежит в корне этого хоста, а не на соседнем хосте и не в разделе.
  2. Запрета на весь хост одним слэшем в файле нет.
  3. Служебные пути закрыты, публичные разделы, стили и карта открыты.
  4. Строка Sitemap ведёт на карту этого же хоста, домен в ней мой.
Потом открываю проверку robots.txt в Яндекс Вебмастере и в Google Search Console. Подставляю один закрытый адрес и один открытый. Закрытый должен попасть под Disallow. Открытый должен остаться доступным для обхода. Чужой генератор файла эту проверку не заменяет: моих папок он не видит.
Когда хост начинает отдавать новый текст, робот прочитает его в следующий заход за этим файлом. К этому моменту файл уже лежит в корне и описывает пути так, как я проверил в браузере и в панелях.
Коралловое кольцо над тёмной плитой на чёрном фоне
Живой адрес файла и проверка двух путей: закрытый служебный и открытая страница.
SEO

Проверю robots.txt

Открою файл в корне хоста и сверю служебные пути, карту сайта и то, что запрет обхода не подменяет запрет индексации.
Интернет-маркетолог и автор материала
Читайте также