Как Google интерпретирует спецификацию robots.txt
Роботы Google бывают двух типов. Одни (поисковые) действуют автоматически и поддерживают стандарт исключений для роботов (REP). Это означает, что перед сканированием сайта они скачивают и анализируют файл robots.txt, чтобы узнать, какие разделы сайта для них открыты. Другие контролируются пользователями (например, собирают контент для фидов) или обеспечивают их безопасность (например, выявляют вредоносное ПО). Они не следуют этому стандарту.
В этой статье рассказывается о том, как Google интерпретирует стандарт REP.
Что такое файл 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 Google 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, ознакомьтесь с общей информацией о них. Также мы подготовили для вас рекомендации по созданию файла robots.txt.
Расположение файла и условия, при которых он действителен
Файл robots.txt должен находиться в каталоге верхнего уровня и передаваться по поддерживаемому протоколу. URL файла robots.txt (как и другие URL) должен указываться с учетом регистра. Google Поиск поддерживает протоколы HTTP, HTTPS и FTP. Для HTTP и HTTPS используется безусловный HTTP-запрос GET
, а для FTP – стандартная команда RETR (RETRIEVE)
и анонимный вход.
Правила, перечисленные в файле robots.txt, действительны только в отношении того хоста, где расположен файл, а также протокола и номера порта, по которым доступен этот файл.
Примеры действительных URL файла robots.txt
Примеры URL файла robots.txt и путей URL, для которых они действительны, приведены в таблице ниже. В первом столбце указан URL файла robots.txt, а во втором – домены, к которым может или не может относиться этот файл.
Примеры URL файла robots.txt | |
---|---|
https://example.com/robots.txt |
Вот общий пример. Такой файл не действует в отношении других субдоменов, протоколов и номеров портов. При этом он действителен для всех файлов во всех подкаталогах, относящихся к тому же хосту, протоколу и номеру порта. Действителен для:
|
https://www.example.com/robots.txt |
Файл robots.txt в субдомене действителен только для этого субдомена. Действителен для:
Недействителен для:
|
https://example.com/folder/robots.txt |
Недействительный файл robots.txt. Поисковые роботы не ищут файлы robots.txt в подкаталогах. |
https://www.exämple.com/robots.txt |
Эквивалентами IDN являются их варианты в кодировке Punycode. Ознакомьтесь также с документом RFC 3492. Действителен для:
Недействителен для:
|
ftp://example.com/robots.txt |
Действителен для:
Недействителен для:
|
https://212.96.82.21/robots.txt |
Если файл robots.txt относится к хосту, имя которого совпадает с IP-адресом, он действителен только при обращении к сайту по этому IP-адресу. Инструкции в нем не распространяются автоматически на все сайты, размещенные по этому IP-адресу (хотя файл robots.txt может быть для них общим, и тогда он будет доступен также по общему имени хоста). Действителен для:
Недействителен для:
|
https://example.com:443/robots.txt |
Если URL указан со стандартным портом ( Действителен для:
Недействителен для:
|
https://example.com:8181/robots.txt |
Файлы 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 временно интерпретирует ошибки сервера Если вам необходимо временно остановить сканирование, рекомендуем передавать код статуса HTTP
Если нам удается определить, что сайт настроен неправильно и в ответ на запросы отсутствующих страниц возвращает ошибку |
Другие ошибки | Если файл robots.txt невозможно получить из-за проблем с DNS или сетью (слишком долгого ожидания, недопустимых ответов, разрыва соединения, ошибки поблочной передачи данных по HTTP), это приравнивается к ошибке сервера. |
Кеширование
Содержание файла robots.txt обычно хранится в кеше не более суток, но может быть доступно и дольше в тех случаях, когда обновить кешированную версию невозможно (например, из-за слишком долгого ожидания или ошибок 5xx
). Сохраненный в кеше ответ может передаваться другим поисковым роботам.
Google может увеличить или уменьшить срок действия кеша с учетом соответствующих HTTP-заголовков.
Формат файла
В файле 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 не будут работать.
В настоящее время максимальный размер файла robots.txt, установленный Google, составляет 500 кибибайт. Контент сверх этого лимита игнорируется. Чтобы не превысить его, применяйте более общие правила. Например, поместите все материалы, которые не нужно сканировать, в один каталог.
Синтаксис
Каждая действительная строка в файле robots.txt состоит из имени поля, двоеточия и значения. Использовать пробелы не обязательно, но рекомендуется для удобства чтения. Пробелы в начале и конце строки игнорируются. Чтобы добавить комментарии, начинайте их с символа #
. Весь текст после символа #
и до конца строки будет игнорироваться. Стандартный формат: <field>:<value><#optional-comment>
.
Google поддерживает следующие поля:
user-agent
: агент пользователя робота, для которого применяется правило.allow
: путь URL, который можно сканировать.disallow
: путь URL, который запрещено сканировать.sitemap
: полный URL файла Sitemap.
Поля allow
и disallow
также называются правилами или директивами. Они всегда задаются в формате rule: [path]
, где значение [path]
указывать необязательно. По умолчанию роботы могут сканировать весь контент. Они игнорируют правила без [path]
.
Значения [path]
указываются относительно корневого каталога сайта, на котором находится файл robots.txt (используются те же протокол, порт, хост и домен).
Значение пути должно начинаться с символа /
, обозначающего корневой каталог. Регистр учитывается. Подробнее о соответствии значения пути конкретным URL…
user-agent
Строка user-agent
определяет, для какого робота применяется правило. Полный список поисковых роботов Google и строк для различных агентов пользователя, которые можно добавить в файл robots.txt, вы можете найти здесь.
Значение строки user-agent
обрабатывается без учета регистра.
disallow
Правило disallow
определяет, какие пути не должны сканироваться поисковыми роботами, заданными строкой user-agent
, с которой сгруппирована директива disallow
.
Роботы игнорируют правило без указания пути.
Google не может индексировать контент страниц, сканирование которых запрещено, однако может индексировать URL и показывать его в результатах поиска без фрагмента. Подробнее о том, как запретить индексирование…
Значение правила 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, они используют самое строгое правило (с более длинным значением пути). При наличии конфликтующих правил (в том числе с подстановочными знаками) выбирается то, которое предполагает наименьшие ограничения.
Ознакомьтесь с примерами ниже.
Примеры | |
---|---|
https://example.com/page |
allow: /p disallow: /
Применяемое правило: |
https://example.com/folder/page |
allow: /folder disallow: /folder
Применяемое правило: |
https://example.com/page.htm |
allow: /page disallow: /*.htm
Применяемое правило: |
https://example.com/page.php5 |
allow: /page disallow: /*.ph
Применяемое правило: |
https://example.com/ |
allow: /$ disallow: /
Применяемое правило: |
https://example.com/page.htm |
allow: /$ disallow: /
Применяемое правило: |