С появлением сканирующих роботов появилась проблема разумного ограничения их действий. Некоторые области сетевых ресурсов могут быть конфиденциальными или служебными и автоматическое сканирование таких областей нежелательно. Кроме этого, в поисковой оптимизации сайтов важно не допускать попадания в индексы поисковых систем дубликатов и не каноничных версий страниц.
В 1994 году по итогам обсуждения проблемы в списке рассылки robots-request@nexor.co.uk был принят стандарт исключений для роботов robots.txt. Он был вполне достаточен для того времени, когда абсолютное большинство веб-сайтов представляли собой просто наборы статических страниц.
Этот стандарт является добровольно выполняемым стандартом де-факто. Он предписывает размещение в корневой директории сайта текстового файла robots.txt с набором инструкций, запрещающих определенным (или всем) сканирующим ботам обращения к заданным областям сайта.
Файл robots.txt обычного текстового формата. Он состоит из блоков, каждый из которых задает набор исключений для одного сканирующего робота. Блоки должны отделяться друг от друга пустой строкой. В файле допускаются комментарии.
Первой строкой в блоке указывается имя робота, для которого задаются правила. В последующих строках перечисляются запрещенные для сканирования области, по одной области в каждой строке. Пустых строк в блоке быть не должно — пустая строка означает окончание блока.
Стандартом предусмотрено две директивы — User-agent: и Disallow: — первая задает имя робота, которому адресован запрет, вторая запрещенную область. Параметр (имя робота или адрес) отделяется пробелом.
Имя робота для указания в robots.txt можно узнать у его владельца (в справочных данных поисковой системы). Символ * вместо имени робота означает, что этот блок исключений дается для всех роботов.
Адреса запрещенных областей указываются от корневой директории сайта, первым символом в них должен быть слеш, обозначающий корневую директорию. Адрес понимается как регулярное выражение вида «любой адрес, который начинается с данного набора символов».
Комментарии обозначаются знаком # — всё от этого символа до конца строки считается комментарием.
Пример:
User-agent: Googlebot #А это комментарий - запреты для робота Google Disallow: /secret Disallow: /admin/my
В этом примере показан блок исключений для робота ПС Google. Первая строка задает имя робота и содержит комментарий (комментарий, разумеется, не обязателен).
Первая директива Disallow запрещает роботу сканировать все, что начинается со строки secret в корне сайта. Это может быть и файл с именем secret без расширения, и файлы secret.html, secret-file.html, и директория secret/ или secretdir/ вместе со всеми файлами, которые в них находятся.
Вторая строка запрещает все файлы или директории, расположенные в директории admin и начинающиеся с my.