Проверка robots.txt
Введите адрес и выберите робота. Мы загрузим robots.txt сайта, применим его так, как велит стандарт, и скажем, открыт адрес или закрыт и какая строка это решает.
Табличка на двери, которую читают перед каждым визитом
Прежде чем запрашивать страницы с хоста, воспитанный робот просит один файл, /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.
Как выносится вердикт
Нужно сделать два выбора, в таком порядке.
- Какая группа. Робот ищет группу, в которой назван его собственный токен, без учёта регистра. Если находит, он подчиняется этой группе и больше ничему. На
User-agent: *он переходит, только когда его не называет ни одна группа. На этом постоянно попадаются: добавьте короткую группу для Googlebot, и вы освободили Googlebot от всех правил, написанных под*. Группы с одним и тем же токеном читаются как одна. У нескольких роботов есть задокументированный запасной вариант, и проверка его применяет. Googlebot-Image и Applebot следуют группе Googlebot, если своей у них нет, а YandexBot следуетYandex. - Какое правило. Внутри группы кандидатом становится каждое правило, шаблон которого совпадает с началом пути. Побеждает кандидат с самым длинным шаблоном, где бы он ни стоял в файле. Если совпадают 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 не удаляет страницы, которые уже есть в индексе.