Web Art Solutions
 

Главная / Статьи / robots.txt: стандарт, расширения, аспекты применения

robots.txt: стандарт, расширения, аспекты применения

Автор:

robots.txt — маленький текстовый файл, способный остановить самых больших роботов

С помощью нескольких простых правил, записанных в обычном текстовой файле, вебмастер может запретить доступ поисковым роботам к отдельным документам, части сайта или сайту полностью.

Для чего запрещают индексацию

Для чего запрещать роботам поисковых систем индексировать сайт, ведь во многих случаях увеличение количества проиндексированных страниц должно влиять на увеличение поискового трафика по низкочастотным запросам? На самом деле на низкочастотный трафик влияет количество проиндексированных информативных страниц. А есть еще страницы малоинформативные, служебные, те или иные дубликаты информативных страниц, обработчики форм, наконец. Как раз такие страницы, не несущие информационной нагрузки не следует отдавать поисковой системе. Рассмотрим наиболее часто встречающиеся примеры неинформативных страниц.

Версии для печати

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

Страницы с формами регистрации

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

Профили пользователей на форумах

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

Страницы корзины товара в интернет-магазинах

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

Страницы различных вариантов сортировки списков

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

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

Страницы с идентификаторами сессий

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

Страницы с адресами-метками

Еще один вариант появления дубликатов страниц. Метки делают специально для целевых страниц во время рекламных кампаний или в почтовых рассылках, чтобы в дальнейшем можно было провести анализ эффективности кампании или рассылки. Как правило, метка представляет собой специальное добавление к адресу страницы, например page.html?from-yandex-direct. В некоторых случаях адреса с метками попадают в индекс поисковой системы и "склеиваются" с самой страницей, для которой эта метка делалась.

Аналогичная ситуация возникает при использовании страниц по умолчанию, когда в адресе можно писать /index.php?var=value, а можно написать /?var=value и попасть на ту же страницу.

Существуют и другие варианты появления неинформативных или служебных страниц, которые нежелательны в индексе поисковой системы. В большинстве случаев можно решить вопрос индексации таких страниц с помощью протокола исключений и файла robots.txt.

История создания протокола исключений

В начале 90-х годов участились случаи, когда некорректные роботы вызывали сбои в работе серверов, в том числе из-за слишком частых запросов или многочисленных запросах одних и тех же документов. Возникла необходимость управления автоматическими сборщиками информации со стороны вебмастера.

Документ, описывающий протокол исключений был впервые представлен 30 июня 1994 года в специализированной рассылке. За 12 прошедших лет протокол так и не стал стандартом де юре, хотя является стандартом де факто, таким образом нет гарантий, что существующие или разработанные в дальнейшем роботы будут придерживаться его правил.

Формат файла robots.txt

Директивы управления роботами записываются в специальном файле исключений robots.txt. Могут быть интересны мотивации при выборе имени файла, следующие указаны в стандарте:

  1. Имя файла должно соответствовать основным критериям к именованиям файлов в большинстве операционных систем.
  2. Имя файла не должно требовать дополнительных настроек веб-сервера.
  3. Имя файла должно указывать на его предназначение и быть легко запоминаемым.
  4. Вероятность совпадения имени с существующими файлами должна быть минимальной.

Формат файла исключений robots.txt довольно прост и описывается всего двумя директивами и несколькими правилами:

  1. Файл robots.txt должен находиться в корневой директории домена. Для каждого поддомена или того же домена, работающего под другим портом создается свой файл robots.txt.
  2. Имя файла регистрозависимое и должно состоять только из строчных (lower-case) символов.
  3. В самом файле может быть одна или несколько записей, где записи разделяются пустыми строками.
  4. Перевод строки может быть в формате любой операционной системы, CR LF, LF или CR.
  5. Каждая запись состоит из одной или нескольких строк с директивой User-agent, за которыми следует одна или несколько строк с директивой Disallow
  6. Комментарием считается все, что начинается с символа # до конца текущей строки.

Отсутствие файла или пустой файл robots.txt равнозначно разрешению любому роботу индексировать весь сайт полностью.

Рассмотрим подробнее, что же указывается в строках с директивами. Возьмем в качестве примера следующий файл исключений:

# Start 
User-agent: BigmirSpider
User-agent: MetaSpider
Disallow: /dir
Disallow: /file.htm

User-agent: *
Disallow:
# Finish

Итак, в строках User-agent указываются имена роботов. Роботы должны быль либеральны при разборе правил, рекомендуется регистронезависимое указание имени робота без номера версии. Если в качестве имени робота используется символ «*», то данная запись является указанием для всех роботов, для которых в файле нет «именных» записей. Недопустимо несколько записей для всех роботов в одном файле. Если в одной записи несколько строк с разными именами роботов, то это означает применение одних и тех же правил для всех указанных роботов.

В строках с Disallow указывается URL, который не следует индексировать. Это может быть как полный адрес, так и частичный. Любой адрес, начало которого совпадает с указанной подстрокой не будет запрашиваться роботами. Следует отметить, что адрес является регистрозависимым. Строка с пустым значением означает разрешение индексировать все, что угодно.

В нашем случае роботам украинских систем поиска Bigmir.net и META запрещено индексировать все, что начинается с /dir и /file.htm, в последнем случае это может быть и файл /file.html?foo=bar. Всем остальным роботам, кроме двух указанных, разрешено индексировать на сайте любые адреса.

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

Нестандартные директивы и расширения

Директива Crawl-delay

Начнем издалека. Поисковые роботы Yahoo и MSN, Slurp и msnbot соответственно, понимают такую дополнительную директиву, как Crawl-delay. Значением данной директивы должна быть цифра, которая указывает время в секундах между обращениями робота к сайту. Данная директива была добавлена после неоднократных обращений пользователей в службу технической поддержки указанных компаний по поводу слишком частых запросов роботов и, соответственно, высокой нагрузке серверов и большому исходящему трафику. Для сайтов, размещенных на площадках в Украине и России, трафик, отдаваемый роботам, является зарубежным, поэтому имеет смысл использовать директиву Crawl-delay для снижения нагрузки и исходящего трафика, в особенности для крупных сайтов.

Директива Allow

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

User-Agent: Googlebot
Disallow: /papka1/
Allow: /papka1/moj_fail.html

В качестве эксперимента я попытался применить директиву Allow в одном robots.txt, однако в записи из 6-ти или 7-ми правил столкнулся с коллизиями, связанными с "перекрытиями" правил в Disallow и Allow, которые не удавалось однозначно решить, поэтому пришлось отказаться от использования данной директивы.

Символы подстановки

Символы подстановки скрывают за собой один или несколько символов. Наиболее часто употребляющийся символ — «*», который обозначает ноль и более символов. Использование символов подстановки в файле robots.txt не предусмотрено, кроме указания всех остальных поисковых систем в директиве User-agent, однако в директиве Disallow данный символ в протоколе не интерпретируется никак иначе самого себя.

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

# блокируются все адреса с параметром ts
Disallow: /*ts=* 
# блокируются все адреса, заканчивающиеся на asp
Disallow: /*.asp$

В алгоритмах поисковой системы Рамблер также заложена функция обработки символа «*», как символа подстановки, т.е. приведенный выше пример с параметром ts можно использовать для запрещения индексации определенных динамических адресов роботом StackRambler.

Директива Host

Директива Host является наиболее широко известной нестандартной директивой в Рунете. Это директива для робота поисковой системы Яндекс, ответственного за работу с зеркалами. Значением директивы должен быть адрес главного зеркала сайта без http://. При указании главного зеркала сайта, все остальные адреса сайта будут считать второстепенными зеркалами «приклеются» к главному. Однако, следует заметить, что, в отличие от всех остальных директив robots.txt, директива Host является лишь рекомендацией роботу, а не четким указанием адреса главного зеркала.

Примеры использования

В качестве примера приведу файл robots.txt раздела форумов, который размещен на отдельном поддомене forum.liga.net. Механизм форумов разрабатывался самостоятельно несколько лет назад. Используемая технология .NET не позволяет относительно простыми методами сделать статические адреса, кроме этого в механизм нежелательно было вносить существенные изменения. Тем не менее, с помощью robots.txt удалось решить выпросы индексации неинформативных страниц и направить индексацию сайта в нужное «русло».

# Record 1
User-agent: msnbot-media
User-agent: Googlebot-Image
User-agent: Yahoo-MMCrawler
Disallow: /

# Record 2
User-agent: Yandex
Disallow: /Messages.asp?sort=
Disallow: /poll/
Disallow: /ic
Host: forum.liga.net

# Record 3
User-agent: Googlebot
Disallow: /poll/
Disallow: /ic
Disallow: /*sort=
Disallow: /*ts=
Disallow: /*=$

# Record 4
User-agent: Slurp
User-agent: msnbot
Disallow: /Messages.asp?sort=
Disallow: /poll/
Disallow: /ic
Crawl-delay: 10

# Record 5
User-agent: StackRambler
Disallow: *sort=
Disallow: *ts=
Disallow: /poll/
Disallow: /ic

# Record 6
User-agent: *
Disallow: /Messages.asp?sort=
Disallow: /poll/
Disallow: /ic

Итак, приведу некоторые комментарии:

  1. Запись №1 полностью запрещает индексацию сайта роботам ряда поисковых систем, ответственных за сбор изображений, как для некоторой экономии исходящего трафика, так и потому, что для данного сайта маловероятно получение посетителей из поиска по изображениям. К сожалению, аналогичным образом невозможно запретить индексацию изображений соответствующему роботу Яндекса, поскольку все роботы Яндекса управляются из одной и той же секции.
  2. Вторая запись для роботов Яндекса среди обычных правил содержит указание на главное зеркало сайта.
  3. Третья запись для робота Google. В ней используются возможности запретить индексацию ряда адресов с использованием символов подстановки. В данном примере запрещается индексации списков тем форума с различными вариантами сортировки, за исключением сортировки по умолчанию, а также списки последних сообщений за определенное время.
  4. Запись №4 для роботов поисковых систем Yahoo и MSN содержит дополнительную директиву Crawl-delay, о назначении которой уже говорилось выше.
  5. Запись №5 сделана для робота Рамблера. В ней также используется возможность запретить индексацию адресов по подстроке в любой части адреса. Данная запись была отделена от записи для Google, поскольку Рамблер не поддерживает корректную интерпретацию символа $ как завершения строки.
  6. Последняя запись для всех остальных роботов содержит запреты индексации ряда страниц без каких-либо дополнительных директив.

Резюме

В качестве резюме приведу несколько правил, которых лучше придерживаться при составлении robots.txt, а особенно при использовании расширений:

  1. Обязательно создавать robots.txt для основного домен и всех поддоменов сайта, даже если не планируется ничего закрывать от роботов следует создать пустой файл исключений. В некоторых случаях сервер настраивается таким образом, что при отсутствии файла сервер выдает нестандартный код ответа для данной ситуации, например редирект. Наличие файла в данном случае позволит избежать проблем с индексацией.
  2. При составлении файла обязательно создавать отдельную запись для всех роботов. Данное правило позволяет избежать индексации «секретных» частей сайта неизвестными роботами.
  3. Использовать нестандартные директивы только в секции для тех роботов, которые их поддерживают. Данное правило позволяет избежать проблем с теми роботами, которые не поддерживают применяемых расширений.
  4. Нестандартные директивы следует размещать в конце списка правил, в большей степени для страховки от ошибок при интерпретации файла соответствующими роботами.

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