Проверка robots.txt

Введите адрес и выберите робота. Мы загрузим robots.txt сайта, применим его так, как велит стандарт, и скажем, открыт адрес или закрыт и какая строка это решает.

Поле токена читается, только когда выбран «Другой краулер». Правила сравниваются с путём и строкой запроса, поэтому укажите точный адрес, а не только домен.

Или попробуйте en.wikipedia.org/w/index.php?title=Special:Search (Googlebot), www.nytimes.com/section/world (GPTBot), github.com/search?q=robots (Bingbot)

Табличка на двери, которую читают перед каждым визитом

Прежде чем запрашивать страницы с хоста, воспитанный робот просит один файл, /robots.txt. В нём перечислены пути, которые владелец сайта предпочёл бы не отдавать, с разбивкой по тому, какой робот спрашивает. Десятилетиями всё держалось только на привычке. В 2022 году появился письменный стандарт, RFC 9309, и эта проверка следует его тексту.

Файл состоит из групп. Группа начинается с одной или нескольких строк User-agent и продолжается правилами Allow и Disallow:

User-agent: *
Disallow: /cart/
Disallow: /*?sort=

User-agent: GPTBot
Disallow: /

Sitemap: https://www.example.com/sitemap.xml

У каждого хоста и каждой схемы свой файл. Правила https://www.example.com ничего не говорят о https://shop.example.com.

Как выносится вердикт

Нужно сделать два выбора, в таком порядке.

  1. Какая группа. Робот ищет группу, в которой назван его собственный токен, без учёта регистра. Если находит, он подчиняется этой группе и больше ничему. На User-agent: * он переходит, только когда его не называет ни одна группа. На этом постоянно попадаются: добавьте короткую группу для Googlebot, и вы освободили Googlebot от всех правил, написанных под *. Группы с одним и тем же токеном читаются как одна. У нескольких роботов есть задокументированный запасной вариант, и проверка его применяет. Googlebot-Image и Applebot следуют группе Googlebot, если своей у них нет, а YandexBot следует Yandex.
  2. Какое правило. Внутри группы кандидатом становится каждое правило, шаблон которого совпадает с началом пути. Побеждает кандидат с самым длинным шаблоном, где бы он ни стоял в файле. Если совпадают Allow и Disallow одинаковой длины, побеждает Allow. Если не совпадает ничего, адрес открыт.

Шаблоны сравниваются с путём и строкой запроса посимвольно и с учётом регистра. Особых символов два: * означает любую последовательность символов, а $ в самом конце означает «путь здесь заканчивается».

ШаблонСовпадаетНе совпадает
/fish/fish, /fish.html, /fishing/rods/Fish, /catfish
/fish//fish/, /fish/salmon/fish, /fish.html
/*.pdf$/guide.pdf, /docs/a.pdf/guide.pdf?v=2
/*?sort=/shoes?sort=price/shoes?page=2&sort=price

Перед сравнением процентное кодирование приводится к одному виду, так что /caf%C3%A9 и /café считаются одним путём.

Как читать результат

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

Статус файла важен не меньше, чем его содержимое:

  • 404 или любой другой 4xx: правил нет, открыт любой адрес. Это касается и 403. Запрет на файл не запрещает обход.
  • 5xx, 429 или нет ответа: робот не может узнать правила и должен держаться подальше от всего сайта, пока файл не вернётся.
  • 200 с веб-страницей внутри: ни одной допустимой строки, значит ничего не закрыто. Так бывает, когда сайт отвечает на любой неизвестный адрес своей главной страницей.

Проверка также сообщает о строках, которые робот пропустит: правила до первой строки User-agent, неизвестные директивы или директивы с опечатками, шаблоны, которые не начинаются с /, файл больше 500 KiB, строки Noindex: (Google отказался от них в 2019 году) и Crawl-delay, которую Googlebot игнорирует.

Чего robots.txt не умеет

Это просьба. Поисковики и крупные ИИ-компании заявляют, что её соблюдают. Парсеры и сканеры безопасности не соблюдают, поэтому никогда не указывайте там секретный путь. К тому же файл публичный, и прочитать его может кто угодно.

Закрыть страницу не значит удалить её. Закрытую страницу не загружают, но её адрес всё равно может появиться в выдаче, если на неё ссылаются другие страницы. Чтобы страница не попала в индекс, оставьте её доступной для обхода и отдавайте noindex в метатеге или в заголовке X-Robots-Tag.

Эта страница читает файл один раз, с нашего сервера. Робот может хранить копию возрастом до суток, а сайт может отдавать разным посетителям разные файлы. У каждого робота к тому же свой парсер. Там, где стандарт молчит, например об опечатках в директивах, мы читаем строку так, как это делает опубликованный парсер Google, и говорим вам об этом.

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

Как закрыть сайт для одного робота и оставить открытым для остальных?

Дайте этому роботу собственную группу с Disallow: /, а остальных не трогайте:

User-agent: GPTBot
Disallow: /

Роботы, которые не находят группы со своим именем, используют группу *, а если её нет, ограничений у них нет.

Почему страница закрыта, хотя для неё есть правило Allow?

Возможны два варианта. Совпадает и более длинный шаблон Disallow, а побеждает самый длинный шаблон. Или правило Allow стоит в группе, которую робот не читает: робот со своей группой полностью игнорирует группу *. Проверка показывает, какая группа применилась и все совпавшие правила.

Disallow удаляет страницу из Google?

Нет. Он не даёт Google загружать страницу, но не мешает показывать её адрес. Используйте noindex на самой странице и не закрывайте её в robots.txt, иначе робот так и не увидит это указание.

robots.txt чувствителен к регистру?

Пути да: Disallow: /Private не распространяется на /private. Имена директив и роботов нет: user-agent: googlebot и User-Agent: Googlebot означают одно и то же.

Что означает пустая строка Disallow?

Disallow: без ничего после двоеточия не закрывает ничего. Группа только с этой строкой говорит «этому роботу можно загружать всё». Disallow: /, со слешем, закрывает весь сайт.

Через сколько вступает в силу изменение robots.txt?

Роботы хранят копию файла, а стандарт просит не пользоваться ею дольше 24 часов. Рассчитывайте, что новое правило начнут соблюдать в течение суток, иногда раньше. Новый Disallow не удаляет страницы, которые уже есть в индексе.