Crawling infrastructure

Как Google интерпретирует спецификацию robots.txt

Автоматизированные
краулеры Google
поддерживаютПротокол исключения роботов (REP)

.
Это означает, что перед сканированием сайта краулеры Google загружают и анализируют файл robots.txt сайта, чтобы извлечь информацию о том, какие части сайта можно сканировать. REP не применяется к краулерам Google, управляемым пользователями (например, подписки на фиды), или краулерам, используемым для повышения безопасности пользователей (например, анализ вредоносного ПО).
На этой странице описывается интерпретация REP компанией Google. С оригинальным стандартом можно ознакомиться в.

Как Google интерпретирует спецификацию robots.txt

RFC 9309

Что такое файл robots.txt

Если вы не хотите, чтобы краулеры получали доступ к разделам вашего сайта, вы можете создать файл robots.txt с соответствующими правилами. Файл robots.txt — это текстовый файл, содержащий правила о том, какие краулеры могут получать доступ к каким частям сайта. Например, файл robots.txt для example.com может выглядеть следующим образом:
Если вы новичок в работе с robots.txt, начните с нашейвводной информации по robots.txt
. Вы также можете найти.

советы по созданию файла robots.txt

Расположение файла и область действия Вы должны разместить файл robots.txt в корневом каталоге сайта по поддерживаемому протоколу. URL-адрес файла robots.txt (как и другие URL-адреса) чувствителен к регистру. В случае Google Search поддерживаемыми протоколами являются HTTP, HTTPS и FTP. По протоколам HTTP и HTTPS краулеры запрашивают файл robots.txt с помощью безусловного запроса HTTP GET ; по FTP краулеры используют стандартную команду RETR (RETRIEVE)

Как Google интерпретирует спецификацию robots.txt — 2

с использованием анонимного входа.

Правила, перечисленные в файле robots.txt, применяются только к хосту, протоколу и номеру порта, на которых размещен файл robots.txt.

Примеры действительных URL-адресов robots.txt

В следующей таблице приведены примеры URL-адресов robots.txt и пути URL, для которых они действительны. В первом столбце указан URL-адрес файла robots.txt, а во втором — домены, к которым этот файл robots.txt применялся бы или не применялся бы.
Примеры URL-адресов Robots.txt

https://example.com/robots.txt

Это общий случай. Он недействителен для других поддоменов, протоколов или номеров портов. Он действителен для всех файлов во всех подкаталогах на том же хосте, протоколе и номере порта.

  • Действительно для:
  • https://example.com/

https://example.com/folder/file

  • Недействительно для:
  • https://other.example.com/
  • http://example.com/
https://example.com:8181/

https://www.example.com/robots.txt

Файл robots.txt на поддомене действителен только для этого поддомена.
Действительно для:

https://www.example.com/

  • Недействительно дляকারীর / Недействительно для (Not valid for: -> Недействительно для:):
    Let's make sure it's Недействительно для:
  • https://shop.www.example.com/
  • https://www.shop.example.com/
https://example.com/folder/robots.txtНедействительный файл robots.txt. Кроулеры не проверяют наличие файлов robots.txt в поддиректориях.
https://www.exämple.com/robots.txt

IDN эквивалентны их пуникод-версиям. См. также
RFC 3492.

Действительно для:

  • https://www.exämple.com/
  • https://xn--exmple-cua.com/

Недействительно для:
https://www.example.com/

ftp://example.com/robots.txt

Действительно для:
ftp://example.com/

Недействительно для:
https://example.com/

https://212.96.82.21/robots.txt

Файл robots.txt с IP-адресом в качестве имени хоста действителен только для сканирования этого IP-адреса как имени хоста. Он не распространяется автоматически на все веб-сайты, размещенные на этом IP-адресе (хотя возможно, что файл robots.txt является общим, и в этом случае он также будет доступен под общим именем хоста).

Действительно для:
https://212.96.82.21/

Недействительно для:
https://example.com/ (даже если размещено на 212.96.82.21)

https://example.com:443/robots.txt

Стандартные номера портов (80 для HTTP, 443 для HTTPS,
21 для FTP) эквивалентны их именам хостов по умолчанию.

Действительно для:

  • https://example.com:443/
  • https://example.com/

Недействительно для:
https://example.com:444/

https://example.com:8181/robots.txt

Файлы robots.txt на нестандартных номерах портов действительны только для контента, доступного через эти номера портов.

Действительно для:
https://example.com:8181/

Недействительно для:
https://example.com/

Обработка ошибок и кодов состояния HTTP

При запросе файла robots.txt код состояния HTTP ответа сервера влияет на то, как файл robots.txt будет использоваться поисковыми роботами Google. В следующей таблице обобщено, как Googlebot обрабатывает файлы robots.txt для различных кодов состояния HTTP.

Обработка ошибок и кодов состояния HTTP
2xx (успешно)Коды состояния HTTP, сигнализирующие об успехе, побуждают роботов Google обрабатывать файл robots.txt в том виде, в каком он предоставлен сервером.
3xx (перенаправление)

Google следует как минимум пяти перенаправлениям (хопам), как определено в
RFC 1945 а затем
останавливается и рассматривает это как 404 для файла robots.txt. Это также относится ко всем заблокированным URL-адресам в цепочке перенаправления, так как робот не смог получить правила из-за перенаправлений.

Google не следует логическим перенаправлениям в файлах robots.txt (фреймы, JavaScript или
перенаправления типа meta refresh).

4xx (ошибки клиента)

Роботы Google обрабатывают все 4xx ошибки, кроме 429, так, как будто действующего файла robots.txt не существовало. Это означает, что Google предполагает отсутствие ограничений на сканирование.

5xx (ошибки сервера)

Если Google находит файл robots.txt, но не может его получить, Google ведет себя следующим образом:

  1. В течение первых 12 часов Google прекращает сканирование сайта, но продолжает попытки получить файл robots.txt.
  2. Если Google не может получить новую версию, в течение следующих 30 дней Google будет использовать последнюю рабочую версию, продолжая попытки получить новую версию. 503 (сервис недоступен)
    ошибка приводит к довольно частым повторным попыткам. Если кэшированная версия недоступна,
    Google предполагает отсутствие ограничений на сканирование.
  3. Если ошибки все еще не устранены через 30 дней:
    • Если сайт в целом доступен для Google, Google будет вести себя так, как будто нет
      никакого файла robots.txt (но продолжит проверять наличие новой версии).
    • Если у сайта есть общие проблемы с доступностью, Google прекратит сканирование сайта,
      периодически продолжая запрашивать файл robots.txt.
Другие ошибкиФайл robots.txt, который не может быть получен из-за проблем с DNS или сетью, таких как
тайм-ауты, недействительные ответы, сброшенные или прерванные соединения и ошибки фрагментации HTTP, обрабатывается как ошибка сервера.

Кэширование

Google обычно кэширует содержимое файла robots.txt на срок до 24 часов, но может кэшировать его дольше в ситуациях, когда обновление кэшированной версии невозможно (например, из-за тайм-аутов или 5xx ошибок). Кэшированный ответ может совместно использоваться различными роботами.
Google может увеличивать или уменьшать время жизни кэша на основе
max-age Cache-Control
HTTP-заголовки.

Формат файла

Файл robots.txt должен быть
UTF-8 закодированным текстовым файлом, а строки должны разделяться CR, CR/LF, или
LF.

Google игнорирует недействительные строки в файлах robots.txt, включая
Маркер последовательности байтов
(BOM) в начале файла robots.txt, и использует только действительные строки. Например, если загруженный контент представляет собой HTML вместо правил robots.txt, Google попытается проанализировать контент, извлечь правила и проигнорировать все остальное.

Аналогично, если кодировка символов файла robots.txt не UTF-8, Google может проигнорировать символы, не входящие в диапазон UTF-8, что потенциально может сделать правила robots.txt недействительными.

Google устанавливает лимит размера файла robots.txt в 500
кибибайт (KiB). Контент, находящийся после максимального размера файла, игнорируется. Вы можете уменьшить размер файла robots.txt, объединив правила, которые привели бы к созданию слишком большого файла robots.txt. Например, поместите исключенный материал в отдельную директорию.

Синтаксис

Действительная строка robots.txt состоит из поля, двоеточия и значения. Имена полей нечувствительны к регистру (например, User-agent и user-agent обрабатываются одинаково). Пробелы необязательны, но рекомендуются для улучшения читаемости. Пробелы в начале и в конце строки игнорируются. Чтобы добавить комментарии, поставьте перед комментарием
# символ. Имейте в виду, что все, что находится после # символа, будет проигнорировано. Общий формат:
<field>:<value><#optional-comment>.

Google поддерживает следующие поля (другие поля, такие как crawl-delay , не поддерживаются):

  • user-agent: определяет, к какому краулеру применяются правила.
  • allow: путь URL, который разрешено сканировать.
  • disallow: путь URL, который запрещено сканировать.
  • sitemap: полный URL файла sitemap.

The allow и disallow поля также называются правилами (также известными как
директивы). Эти правила всегда задаются в виде
правило: [path] где [path] необязательно. По умолчанию нет никаких ограничений на сканирование для указанных сканеров. Сканеры игнорируют правила без
[path].

Значение [path] , если оно указано, отсчитывается от корня веб-сайта, с которого был загружен файл robots.txt (с использованием того же протокола, номера порта, хоста и доменных имен). Значение пути должно начинаться с / чтобы указать корень, и значение чувствительно к регистру. Узнать больше о
сопоставлении URL на основе значений путей.

user-agent

Строка user-agent определяет, к каким сканерам применяются правила. См.
Сканеры Google и строки user-agent
для получения полного списка строк user-agent, которые вы можете использовать в своем файле robots.txt.

И имя поля user-agent , и его значение не зависят от регистра.

disallow

Правило disallow определяет пути, к которым не должны иметь доступ сканеры, определяемые строкой user-agent , с которой сгруппировано правило disallow .
Сканеры игнорируют правило без пути.

Google не может индексировать содержимое страниц, сканирование которых запрещено, но он все равно может индексировать URL-адрес и показывать его в результатах поиска без фрагмента. Узнайте, как
заблокировать индексацию.

Имя поля (disallow) не зависит от регистра, но его значение чувствительно к регистру.

Использование:

allow

Правило allow определяет пути, к которым разрешен доступ указанным сканерам. Если путь не указан, правило игнорируется.

Имя поля (allow) нечувствителен к регистру, но его значение чувствительно к регистру.

Использование:

sitemap

Google, Bing и другие основные поисковые системы поддерживают поле sitemap в файле
robots.txt, как определено в sitemaps.org.

Имя поля (sitemap) нечувствительно к регистру, но его значение чувствительно к регистру.

Использование:

Строка [absoluteURL] указывает на расположение файла sitemap или индексного файла sitemap. Это должен быть полный URL-адрес, включая протокол и хост, и он не обязательно должен быть URL-кодирован. URL-адрес не обязательно должен находиться на том же хосте, что и файл robots.txt. Вы можете указать несколько полей sitemap без ограничений на количество включаемых sitemap. Поле sitemap не привязано к какому-либо конкретному агенту пользователя и может обрабатываться всеми краулерами при условии, что его обход не запрещен.

Например:

Группировка строк и правил

Вы можете сгруппировать правила, применяемые к нескольким агентам пользователя, повторяя строки
user-agent для каждого краулера.

Например:

В этом примере есть четыре отдельные группы правил:

  • Одна группа для агента пользователя “a”.
  • Одна группа для агента пользователя “b”.
  • Одна группа для агентов пользователей “e” и “f”.
  • Одна группа для агента пользователя “h”.

Техническое описание группы см. в
разделе 2.1 REP.

Порядок старшинства для агентов пользователя

Для конкретного краулера действительна только одна группа. Краулеры Google определяют правильную группу правил, находя в файле robots.txt группу с наиболее специфичным агентом пользователя, который соответствует агенту пользователя краулера. Другие группы игнорируются. Весь текст, не соответствующий условиям, игнорируется (например, и googlebot/1.2 и googlebot* эквивалентны googlebot). Порядок групп внутри файла robots.txt не имеет значения.

Если для агента пользователя объявлено более одной специфичной группы, все правила из групп, применимых к конкретному агенту пользователя, внутренне объединяются в одну группу. Группы, специфичные для агента пользователя, и глобальные группы (*) не объединяются.

Примеры

Сопоставление полей user-agent

Вот как сканеры выберут соответствующую группу:

Группа, за которой следует сканер
Googlebot Newsgooglebot-news следует группе 1, поскольку группа 1 является наиболее специфичной.
Googlebot (веб)googlebot следует группе 3.
Googlebot StorebotStorebot-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,
сканеры Google объединяют эти группы внутри себя. Например:

Сканеры внутренне группируют правила на основе user-agent, например:

Правила, отличные от allow, disallow, и user-agent ,
игнорируются парсером robots.txt. Это означает, что следующий фрагмент robots.txt рассматривается
как одна группа, и таким образом, как user-agent a , так и b находятся под влиянием disallow: / rule:

Когда сканеры обрабатывают правила robots.txt, они игнорируют sitemap строку.
Например, вот как сканеры восприняли бы предыдущий фрагмент robots.txt:

Сопоставление URL на основе значений путей

Google использует значение пути в правилах allow и disallow в качестве основы для определения того, применяется ли правило к конкретному URL на сайте. Это работает путем сравнения правила с компонентом пути URL, который сканер пытается получить.
Путь в правилах может состоять либо из необработанных символов UTF-8, либо из строк UTF-8 с процентным кодированием
(согласно RFC 3986).
Как определено в RFC 9309 Section 2.2.2,
сканеры Google сравнивают правила с URL-адресами, используя их формы с процентным кодированием, и автоматически приводят необработанные пути правил UTF-8 к формам с процентным кодированием. Это означает, например, что
Disallow: /foo/bar/ツ и Disallow: /foo/bar/%E3%83%84 обрабатываются синтаксическим анализатором одинаково.

Google, Bing и другие основные поисковые системы поддерживают ограниченную форму wildcards для значений путей. Эти символы подстановки:

  • * означает 0 или более вхождений любого допустимого символа.
  • $ означает конец URL.

В следующей таблице показано, как различные символы подстановки влияют на синтаксический анализ:

Примеры совпадений путей
/Соответствует корню и любому URL более низкого уровня.
/*Эквивалентно /. Замыкающий символ подстановки игнорируется.
/$Соответствует только корню. Сканирование любых URL более низкого уровня разрешено.
/fish

Соответствует любому пути, начинающемуся с /fish. Обратите внимание, что сопоставление учитывает регистр символов.

Соответствует:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

Не соответствует:

  • /Fish.asp
  • /catfish
  • /?id=fish
  • /desert/fish
/fish*

Эквивалентно: /fish. Конечный символ подстановки игнорируется.

Соответствует:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

Не соответствует:

  • /Fish.asp
  • /catfish
  • /?id=fish
  • /desert/fish
/fish/

Соответствует всему в папке /fish/ .

Соответствует:

  • /fish/
  • /fish/?id=anything
  • /fish/salmon.htm

Не соответствует:

  • /fish
  • /fish.html
  • /animals/fish/
  • /Fish/Salmon.asp
/*.php

Соответствует любому пути, содержащему .php.

Соответствует:

  • /index.php
  • /filename.php
  • /folder/filename.php
  • /folder/filename.php?parameters
  • /folder/any.php.file.html
  • /filename.php/

Не совпадает:

  • / (даже если оно сопоставляется с /index.php)
  • /windows.PHP
/*.php$

Совпадает с любым путем, который заканчивается на .php.

Совпадает:

  • /filename.php
  • /folder/filename.php

Не совпадает:

  • /filename.php?parameters
  • /filename.php/
  • /filename.php5
  • /windows.PHP
/fish*.php

Совпадает с любым путем, который содержит /fish и .php, в указанном порядке.

Совпадает:

  • /fish.php
  • /fishheads/catfish.php?parameters

Не совпадает:

/Fish.PHP

Порядок приоритета правил

При сопоставлении правил robots.txt с URL-адресами краулеры используют наиболее специфичное правило на основе длины пути правила. В случае конфликтующих правил, включая правила с подстановочными знаками, Google использует наименее ограничивающее правило.

Следующие примеры демонстрируют, какое правило краулеры Google применят к заданному URL-адресу.

Примеры ситуаций
https://example.com/page

Применимое правило: allow: /p, так как оно более специфично.

https://example.com/folder/page

Применимое правило: allow: /folder, так как в случае противоречащих друг другу правил Google использует наименее ограничивающее правило.

https://example.com/page.htm

Применимое правило: disallow: /*.htm, так как путь правила длиннее и соответствует большему количеству символов в URL, поэтому оно является более точным.

https://example.com/page.php5

Применимое правило: allow: /page, так как в случае противоречащих друг другу правил Google использует наименее ограничивающее правило.

https://example.com/

Применимое правило: allow: /$, так как оно более конкретно.

https://example.com/page.htm

Применимое правило: disallow: /, поскольку
allow правило применяется только к корневому URL.

Alien Road

Как мы это применяем

The formal specification resolves the arguments that the introductory guide leaves open, particularly around precedence and wildcards. We cite it directly when a developer and an SEO disagree about whether a rule applies.

Связанные услуги

Поделиться