Составление файла robots.txt

Автор — Владимир Чернышов aka Cherny
Как известно, файл robots.txt используется для запрета индексации части или всего сайта всевозможными роботами. Правильное составление этого файла позволит избежать индексации документов, для индексации не предназначенных.

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

Robots.txt — простой текстовый файл1, который должен находиться в корневой директории сервера. Имя файла должно быть в нижнем регистре (ROBOTS.TXT, Robots.txt — неправильно).

В файле содержатся записи, отделяемые одной или несколькими пустыми строками (разделяемыми CR, CRNL, NL или r, rn, n). Каждая запись, в свою очередь, состоит из строк следующего вида:

имя_поля[необязательные пробелы]:[необязательные пробелы]значение[необязательные пробелы]

Поле является нечувствительным к регистру (case insensitive).

Каждая запись начинается одной или несколькими строками, где имя_поля=User-agent, после чего следует одна или несколько строк, где имя_поля=Disallow, имена полей, которые отличаются от двух указанных, игнорируются2.

Знак «#» означает, что пробелы перед ним и все символы до конца строки являются комментарием. Строки, содержащие только комментарий, игнорируются и не могут использоваться для разделения записей.
User-agent

* Значением этого поля является имя робота, к которому применяются правила доступа;
* Если строк с User-agent несколько, то для всех роботов применяются одинаковые правила, которые содержаться в текущей записи;
* Если значение поля равно «*», то правила применяются к любому роботу, для которого нет отдельной записи. В файле robots.txt может быть только одна запись с User-agent: *.

Disallow

* В записи должно быть хотя бы одно поле Disallow;
* в поле Disallow указывается частичный или полный путь (URL), который не будет посещен;
* пустое значение (Disallow: ) интерпретируется как разрешение на посещение любой страницы;
* регулярные выражения и символы подстановки запрещены3.

Практика

В процессе обработки сайта роботы имеют массив ссылок для посещения и набор правил исключения из файла robots.txt. Для каждой ссылки выделяется путь (http://www.site.com/path/to/file.html), после чего к этому пути применяются по очереди правила исключения. Пусть в файле есть строка Disallow: /path/to, она сравнивается с соответствующей подстрокой ссылки:
http://www.site.com/path/to/file1.html — посещение запрещено;
http://www.site.com/path/to/file2.html — посещение запрещено;
http://www.site.com/path/file3.html — посещение разрешено.

Чтобы запретить роботу посещение динамических страниц, можно использовать частичный путь. Например, чтобы запретить посещение страниц для печати вида http://www.site.com/index.php?action=print&id=1, но разрешить посещение страниц вида http://www.site.com/index.php?action=view&id=1, необходимо в robots.txt написать следующее:
Disallow: /index.php?action=print
Однако следует учитывать порядок параметров в ссылке. Так, следующие страницы робот посетит: http://www.site.com/index.php?id=1&action=print http://www.site.com/?action=print&id=1
Пример файла robots.txt

User-agent: *
Disallow: /news
# запретить всем роботам индексировать ссылки,
#которые начинаются с /news

User-agent: StackRambler
User-agent: Aport
Disallow: /eng
Disallow: /news
#Рамблеру и Апорту запретить индексацию ссылок,
#которые начинаются с /news и /eng

User-agent: Yandex
Disallow:
#Яндексу разрешить все.

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

Кроме этого в файл исключений не стоит добавлять пути к файлам, о существовании которых не следует знать посторонним людям. Файл robots.txt доступен всем, поэтому присутствие там строк, вроде Disallow: /admin, только подзадорит некоторых посетителей к совершению вредоносных действий.
Примечания

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

2. Некоторые системы поддерживают дополнительные поля. Яндекс, например, использует поле Host для определения основного зеркала сайта.

3. Некоторые системы разрешают использование регулярных выражений. Так Гугл, который имеет поиск по изображениям, файлам PDF и другим, поддерживает в поле Disallow символы «*» (любая последовательность символов) и «$» (окончание строки ссылки). Это позволяет запретить индексирование определенного типа файлов:
User-agent: Googlebot
Disallow: *.pdf$
#Запрет индексации файлов PDF

По мнению автора это избыточное расширение, так как с тем же успехом можно вынести все документы PDF в отдельный каталог и запретить его индексирование:
User-agent: *
Disallow: /pdf/

Основатель Searchengines.ru. С 2005 по 2014 год работал генеральным директором компании "Яндекс.Украина". Основатель и директор крупнейшего коворкинга Одессы — "Терминал 42". Ведет блог, участвует в подкастах. Больше ничего не умеет.