Как Google интерпретирует спецификацию robots.txt
Роботы Google бывают двух типов. Одни (поисковые) действуют автоматически и поддерживают стандарт исключений для роботов (REP). Это означает, что перед сканированием сайта они скачивают и анализируют файл robots.txt, чтобы узнать, какие разделы сайта для них открыты. Другие контролируются пользователями (например, собирают контент для фидов) или обеспечивают их безопасность (например, выявляют вредоносное ПО). Они не следуют этому стандарту.
Что такое файл robots.txt
В файле robots.txt можно задать правила, которые запрещают поисковым роботом сканировать определенные разделы и страницы вашего сайта. Он создается в обычном текстовом формате и содержит набор инструкций. Так может выглядеть файл robots.txt на сайте example.com:
# This robots.txt file controls crawling of URLs under https://example.com. # All crawlers are disallowed to crawl files in the "includes" directory, such # as .css, .js, but Googlebot needs them for rendering, so Googlebot is allowed # to crawl them. User-agent: * Disallow: /includes/ User-agent: Googlebot Allow: /includes/ Sitemap: https://example.com/sitemap.xml
Расположение и области действия файла
Файл robots.txt должен находиться в каталоге верхнего уровня и передаваться по поддерживаемому протоколу. Google Поиск поддерживает протоколы HTTP, HTTPS и FTP. Для HTTP и HTTPS используется безусловный HTTP-запрос GET
, а для FTP – стандартная команда RETR (RETRIEVE)
и анонимный вход.
Правила, перечисленные в файле robots.txt, действительны только в отношении того хоста, где расположен файл, а также протокола и номера порта, по которым доступен этот файл.
Примеры действительных URL файла robots.txt
Примеры URL файла robots.txt и путей URL, для которых они действительны, приведены в таблице ниже.
Примеры URL файла robots.txt | |
---|---|
http://example.com/robots.txt |
Действителен для:
|
http://www.example.com/robots.txt |
Действителен для: Недействителен для:
|
http://example.com/folder/robots.txt |
Недействительный файл robots.txt. Поисковые роботы не ищут файлы robots.txt в подкаталогах. |
http://www.exämple.com/robots.txt |
Действителен для:
Недействителен для: |
ftp://example.com/robots.txt |
Действителен для: Недействителен для: |
http://212.96.82.21/robots.txt |
Действителен для: Недействителен для: |
http://example.com:80/robots.txt |
Действителен для:
Недействителен для: |
http://example.com:8181/robots.txt |
Действителен для: Недействителен для: |
Обработка ошибок и коды статуса HTTP
От того, какой код статуса HTTP вернет сервер при обращении к файлу robots.txt, зависит, как дальше будут действовать поисковые роботы Google. О том, как робот Googlebot обрабатывает файлы robots.txt для разных кодов статуса HTTP, рассказано в таблице ниже.
Обработка ошибок и коды статуса HTTP | |
---|---|
2xx (success) |
Получив один из кодов статуса HTTP, которые сигнализируют об успешном выполнении, робот Google начинает обрабатывать файл robots.txt, предоставленный сервером. |
3xx (redirection) |
Google выполняет пять переходов в цепочке переадресаций согласно RFC 1945. Затем поисковый робот прерывает операцию и интерпретирует ситуацию как ошибку Google не обрабатывает логические перенаправления в файлах robots.txt (фреймы, JavaScript или метатеги refresh). |
4xx (client errors) |
Поисковые роботы Google воспринимают все ошибки |
5xx (server errors) |
Поскольку сервер не может дать определенный ответ на запрос файла robots.txt, Google временно интерпретирует ошибки сервера
Если нам удается определить, что сайт настроен неправильно и в ответ на запросы отсутствующих страниц возвращает ошибку |
Другие ошибки | Если файл robots.txt невозможно получить из-за проблем с DNS или сетью (слишком долгого ожидания, недопустимых ответов, разрыва соединения, ошибки поблочной передачи данных по HTTP), это приравнивается к ошибке сервера. |
Кеширование
Содержание файла robots.txt обычно хранится в кеше не более суток, но может быть доступно и дольше в тех случаях, когда обновить кешированную версию невозможно (например, из-за истечения времени ожидания или ошибок 5xx
). Сохраненный в кеше ответ может передаваться другим поисковым роботам.
Google может увеличить или уменьшить срок действия кеша в зависимости от значения атрибута max-age в HTTP-заголовке Cache-Control.
Формат файла
В файле robots.txt должен быть обычный текст в кодировке UTF-8. В качестве разделителей строк следует использовать символы CR
, CR/LF
и LF
.
Добавляемая в начало файла robots.txt метка порядка байтов Unicode BOM игнорируется, как и недопустимые строки. Например, если вместо правил robots.txt Google получит HTML-контент, система попытается проанализировать контент и извлечь правила. Все остальное будет проигнорировано.
Если для файла robots.txt используется не UTF-8, а другая кодировка, Google может проигнорировать символы, не относящиеся к UTF-8. В таком случае правила из файла robots.txt не будут работать.
В настоящее время максимальный размер файла, установленный Google, составляет 500 кибибайт (КиБ). Контент сверх этого лимита игнорируется. Чтобы не превысить его, применяйте более общие директивы. Например, поместите все материалы, которые не нужно сканировать, в один каталог.
Синтаксис
Каждая действительная строка в файле robots.txt состоит из имени поля, двоеточия и значения. Использовать пробелы не обязательно, но рекомендуется для удобства чтения. Пробельные символы в начале и конце строки игнорируются. Чтобы добавить комментарии, начинайте их с символа #
. Весь текст после символа #
и до конца строки будет игнорироваться. Стандартный формат: <field>:<value><#optional-comment>
.
Google поддерживает следующие поля:
user-agent
: агент пользователя робота, для которого применяется правило.allow
: путь URL, который можно сканировать.disallow
: путь URL, который запрещено сканировать.sitemap
: полный URL файла Sitemap.
Поля allow
и disallow
также называются директивами.
Они всегда задаются в формате directive: [path]
, где значение [path]
указывать необязательно. По умолчанию роботы могут сканировать весь контент. Они игнорируют директивы без [path]
.
Значения [path]
указываются относительно корневого каталога сайта, на котором находится файл robots.txt (используется тот же протокол, порт, хост и домен).
Значение пути должно начинаться с символа /
, обозначающего корневой каталог. Регистр учитывается. Подробнее о соответствии значения пути конкретным URL…
user-agent
Строка user-agent
определяет, для какого робота применяется правило. Полный список поисковых роботов Google и строк для различных агентов пользователя, которые можно добавить в файл robots.txt, вы можете найти здесь.
Значение строки user-agent
обрабатывается без учета регистра.
disallow
Директива disallow
определяет, какие пути не должны сканироваться поисковыми роботами, определенными строкой агента пользователя, с которой сгруппирована директива disallow
.
Роботы игнорируют директиву без указания пути.
Значение директивы disallow
обрабатывается с учетом регистра.
Синтаксис:
disallow: [path]
allow
Директива allow
определяет пути, которые могут сканироваться поисковыми роботами. Если путь не указан, она игнорируется.
Значение директивы allow
обрабатывается с учетом регистра.
Синтаксис:
allow: [path]
sitemap
Google, Bing и другие крупные поисковые системы поддерживают поле sitemap
из файла robots.txt. Дополнительную информацию вы можете найти на сайте sitemaps.org.
Значение поля sitemap
обрабатывается с учетом регистра.
Синтаксис:
sitemap: [absoluteURL]
Строка [absoluteURL]
указывает на расположение файла Sitemap или файла индекса Sitemap.
URL должен быть полным, с указанием протокола и хоста. Нет необходимости кодировать URL. Хост URL не обязательно должен быть таким же, как и у файла robots.txt. Вы можете добавить несколько полей sitemap
. Эти поля не связаны с каким-либо конкретным агентом пользователя. Если их сканирование не запрещено, они доступны для всех поисковых роботов.
Пример:
user-agent: otherbot disallow: /kale sitemap: https://example.com/sitemap.xml sitemap: https://cdn.example.org/other-sitemap.xml sitemap: https://ja.example.org/テスト-サイトマップ.xml
Группировка строк и правил
Вы можете группировать правила, которые применяются для разных агентов пользователя. Просто повторите строки user-agent
для каждого поискового робота.
Пример:
user-agent: a disallow: /c user-agent: b disallow: /d user-agent: e user-agent: f disallow: /g user-agent: h
В этом примере есть четыре группы правил:
- первая – для агента пользователя "a";
- вторая – для агента пользователя "b";
- третья – одновременно для агентов пользователей "e" и "f";
- четвертая – для агента пользователя "h".
Техническое описание группы вы можете найти в разделе 2.1 этого документа.
Приоритет агентов пользователей
Для отдельного поискового робота действительна только одна группа. Он должен найти ту, в которой наиболее конкретно указан агент пользователя из числа подходящих. Другие группы игнорируются. Весь неподходящий текст игнорируется. Например, значения googlebot/1.2
и googlebot*
эквивалентны значению googlebot
. Порядок групп в файле robots.txt не важен.
Если агенту пользователя соответствует несколько групп, то все относящиеся к нему правила из всех групп объединяются в одну. Группы, относящиеся к определенным агентам пользователя, не объединяются с общими группами, которые помечены значком *
.
Примеры
Сопоставление полей user-agent
user-agent: googlebot-news (group 1) user-agent: * (group 2) user-agent: googlebot (group 3)
Поисковые роботы выберут нужные группы следующим образом:
Выбор групп различными роботами | |
---|---|
Googlebot-News |
googlebot-news выбирает группу 1, поскольку это наиболее конкретная группа.
|
Googlebot (веб-поиск) | googlebot выбирает группу 3. |
Google StoreBot |
Storebot-Google выбирает группу 2, поскольку конкретной группы Storebot-Google нет.
|
Googlebot-News (при сканировании изображений) |
При сканировании изображений googlebot-news выбирает группу 1.
googlebot-news не сканирует изображения для Google Картинок, поэтому выбирает только группу 1.
|
Otherbot (веб-поиск) | Остальные поисковые роботы Google выбирают группу 2. |
Otherbot (для новостей) |
Другие поисковые роботы Google, которые сканируют новости, но не являются роботами googlebot-news , выбирают группу 2. Даже если имеется запись для схожего робота, она недействительна без точного соответствия.
|
Группировка правил
Если в файле robots.txt есть несколько групп для определенного агента пользователя, выполняется внутреннее объединение этих групп. Пример:
user-agent: googlebot-news disallow: /fish user-agent: * disallow: /carrots user-agent: googlebot-news disallow: /shrimp
Поисковые роботы объединяют правила с учетом агента пользователя, как указано в примере кода ниже.
user-agent: googlebot-news disallow: /fish disallow: /shrimp user-agent: * disallow: /carrots
Парсер для файлов robots.txt игнорирует все правила, кроме следующих: allow
, disallow
, user-agent
. В результате указанный фрагмент файла robots.txt обрабатывается как единая группа и правило disallow: /
: влияет как на user-agent
a
, так и на b
:
user-agent: a sitemap: https://example.com/sitemap.xml user-agent: b disallow: /
При обработке правил в файле robots.txt поисковые роботы игнорируют строку sitemap
.
Например, вот как роботы обработали бы приведенный выше фрагмент файла robots.txt:
user-agent: a user-agent: b disallow: /
Соответствие значения пути конкретным URL
Google использует значение пути в директивах allow
и disallow
, чтобы определить, должно ли правило применяться к определенному URL на сайте. Для этого правило сравнивается с компонентом пути в URL, данные по которому пытается получить поисковый робот.
Символы, не входящие в набор 7-битных символов ASCII, можно указать в виде экранированных значений в кодировке UTF-8 (см. RFC 3986).
Google, Bing и другие крупные поисковые системы поддерживают определенные подстановочные знаки для путей:
*
обозначает 0 или более вхождений любого действительного символа.$
обозначает конец URL.
Примеры | |
---|---|
/ |
Соответствует корневому каталогу и всем URL более низкого уровня. |
/* |
Аналогичен элементу / . Подстановочный знак игнорируется. |
/$ |
Соответствует только корневому каталогу. На всех URL более низкого уровня разрешено сканирование. |
/fish |
Соответствует всем путям, которые начинаются с Соответствует:
Не соответствует:
|
/fish* |
Аналогичен элементу Соответствует:
Не соответствует:
|
/fish/ |
Соответствует любым элементам в папке Соответствует:
Не соответствует:
|
/*.php |
Соответствует всем путям, которые содержат Соответствует:
Не соответствует:
|
/*.php$ |
Соответствует всем путям, которые заканчиваются на Соответствует:
Не соответствует:
|
/fish*.php |
Соответствует всем путям, которые содержат Соответствует:
Не соответствует: |
Порядок применения правил
Когда роботы соотносят правила из файла robots.txt с URL, они используют самое строгое правило (с более длинным значением пути). При наличии конфликтующих правил (в том числе с подстановочными знаками) выбирается то, которое предполагает наименьшие ограничения.
Ознакомьтесь с примерами ниже.
Примеры | |
---|---|
http://example.com/page |
allow: /p disallow: /
Применяемое правило: |
http://example.com/folder/page |
allow: /folder disallow: /folder
Применяемое правило: |
http://example.com/page.htm |
allow: /page disallow: /*.htm
Применяемое правило: |
http://example.com/page.php5 |
allow: /page disallow: /*.ph
Применяемое правило: |
http://example.com/ |
allow: /$ disallow: /
Применяемое правило: |
http://example.com/page.htm |
allow: /$ disallow: /
Применяемое правило: |