/robots.txt

Дата 2005/1/12 19:50:00 | Раздел: Статьи и документация

Оригинал статьи находится в "Руководстве по созданию Интернет-магазина на основе OsCommerce"

Опубликовано: дек. 2005


Официальная часть.

Описание формата файла robots.txt

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

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

Формат и семантика файла /robots.txt следующие:

Файл должен содержать одну или несколько записей (records), разделенных одной или несколькими пустыми строками (оканчивающимися CR, CR/NL или NL).

Каждая запись должна содержать строки (lines) в форме:

":".

Поле является регистронезависимым.

Комментарии могут быть включены в файл в обычной для UNIX форме: символ # означает начало комментария, конец строки - конец комментария.

Запись должна начинаться с одной или нескольких строк User-Agent, следом должна быть одна или несколько строк Disallow, формат которых приведен ниже. Нераспознанные строки игнорируются.

User-Agent - значением этого поля должно являться имя поискового робота, которому в этой записи устанавливаются права доступа. если в записи указано более одного имени робота, то права доступа распространяются для всех указанных имен. заглавные или строчные символы роли не играют если в качестве значения этого поля указан символ "*", то заданные в этой записи права доступа распространяются на любых поисковых роботов, запросивших файл /robots.txt

Disallow - значением этого поля должен являться частичный URL, который не должен индексироваться. Это может быть полный путь или частичный; любой URL, начинающийся с такого пути не должен индексироваться. Например, Disallow: /help закрывает и /help.html, и /help/index.html, тогда как Disallow: /help/- только /help/index.html. если значение Disallow не указано, то это означает, что индексируется все дерево каталогов сервера Любая запись (record) должна состоять хотя бы из одной строки (line) User-Agent и одной - Disallow

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

Пример 1:

# robots.txt for http://www.site.com

User-Agent: *

Disallow: /cyberworld/map/ # this is an infinite virtual URL space

Disallow: /tmp/ # these will soon disappear

В примере 1 закрывается от индексации содержимое директорий /cyberworld/map/ и /tmp/.

Пример 2:

# robots.txt for http://www.site.com

User-Agent: *

Disallow: /cyberworld/map/ # this is an infinite virtual URL space

# Cybermapper knows where to go

User-Agent: cybermapper

Disallow:

В примере 2 закрывается от индексации содержимое директории /cyberworld/map/, однако поисковому роботу cybermapper все разрешено.

Пример 3:

# robots.txt for http://www.site.com

User-Agent: *

Disallow: /

В примере 3 любому поисковому роботу запрещается индексировать сервер.



А теперь в свободном изложении.

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

Оказывается, все "умные" поисковые машины сначала обращаются к этому файлу, который должен присутствовать на каждом сервере. Этот файл описывает права доступа для поисковых роботов, причем существует возможность указать для различных роботов разные права. Для него существует стандарт под названием Standart for Robot Exclusion.

Файл /robots.txt предназначен для указания всем поисковым роботам индексировать информационные сервера так, как определено в этом файле, т.е. только те директории и файлы сервера, которые НЕ описаны в /robots.txt. Это файл должен содержать 0 или более записей, которые связаны с тем или иным роботом, и указывают для каждого робота или для всех сразу что именно им НЕ НАДО индексировать. Тот, кто пишет файл /robots.txt, должен указать подстроку Product Token поля User-Agent, которую каждый робот выдает на HTTP-запрос индексируемого сервера.

Если робот не нашел своего описания в /robots.txt - он поступает так, как считает нужным. Как только робот "увидел" в файле /robots.txt описание для себя - он поступает так, как ему предписано.

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

- указывать директорию, которую не следует индексировать, и, соответственно, не подлежащие индексированию файлы располагать именно в ней

- создавать структуру сервера с учетом упрощения описания исключений в /robots.txt

- указывать один способ индексирования для всех

- указывать маски для директорий и файлов

Robots.txt должен создаваться в текстовом формате Unix. Большинство хороших текстовых редакторов уже умеют превращать символы перевода строки Windows в Unix. Либо ваш FTP-клиент должен уметь это делать. Для редактирования не пытайтесь пользоваться HTML-редактором, особенно таким, который не имеет текстового режима отображения кода.

Поле User-agent

Строка User-agent содержит название робота. Например: User-agent: googlebot

Если вы обращаетесь ко всем роботам, вы можете использовать символ подстановки "*": User-agent: *

Названия роботов Вы можете найти в логах вашего веб-сервера. Для этого выберите только запросы к файлу robots.txt. Большинство поисковых серверов присваивают короткие имена своим паукам-индексаторам.

Поле Disallow:

Вторая часть записи состоит из строк Disallow. Эти строки - директивы для данного робота. Они сообщают роботу какие файлы и/или каталоги роботу неразрешено индексировать. Например следующая директива запрещает паукам индексировать файл email.htm: Disallow: email.htm

Директива может содержать и название каталога: Disallow: /cgi-bin/

Эта директива запрещает паукам-индексаторам лезть в каталог "cgi-bin".

В директивах Disallow могут также использоваться и символы подстановки. Стандарт диктует, что директива /bob запретит паукам индексировать и /bob.html и /bob/index.html.

Если директива Disallow будет пустой, это значит, что робот может индексировать ВСЕ файлы. Как минимум одна директива Disallow должна присутствовать для каждого поля User-agent, чтобы robots.txt считался верным. Полностью пустой robots.txt означает то же самое, как если бы его не было вообще.

Пробелы и комментарии

Любая строка в robots.txt, начинающаяся с #, считается комментарием. Стандарт разрешает использовать комментарии в конце строк с директивами, но это считается плохим стилем: Disallow: bob #comment

Некоторые пауки не смогут правильно разобрать данную строку и вместо этого поймут ее как запрет на индексацию ресурсов bob#comment. Мораль такова, что комментарии должны быть на отдельной строке.

Пробел в начале строки разрешается, но не рекомендуется. Disallow: bob #comment

Примеры

Следующая директива разрешает всем роботам индексировать все ресурсы сайта, так как используется символ подстановки "*".

User-agent: *

Disallow:

Эта директива запрещает всем роботам это делать:

User-agent: *

Disallow: /

Данная директива запрещает всем роботам заходить в каталоги "cgi-bin" и "images":

User-agent: *

Disallow: /cgi-bin/

Disallow: /images/

Данная директива запрещает роботу Roverdog индексировать все файлы сервера:

User-agent: Roverdog

Disallow: /

Данная директива запрещает роботу googlebot индексировать файл cheese.htm:

User-agent: googlebot

Disallow: cheese.htm

Если вас интересуют более сложные примеры, попутайтесь вытянуть файл robots.txt с какого-нибудь крупного сайта.

Дополнения к стандартам

Несмотря на то, что были предложения по расширению стандарта и введению директивы Allow или учета версии робота, эти предложения формально так и не были утверждены.

Ошибки в robots.txt

Одна из самых распространенных ошибок - перевернутый синтаксис:

User-agent: *

Disallow: scooter

А должно быть так:

User-agent: scooter

Disallow: *

Многие указывали несколько директив на одной строке:

Disallow: /css/ /cgi-bin/ /images/

Различные пауки поймут эту директиву по разному. Некоторые проигнорируют пробелы и поймут директиву как запрет на индексацию каталога /css//cgi-bin//images/. Либо они возьмут только один каталог (/images/ или /css/) и проигнорируют все остальное.

Правильный синтаксис таков:

Disallow: /css/

Disallow: /cgi-bin/

Disallow: /images/

Еще одна распространенная ошибка - редактирование файла robots.txt в формате DOS. Несмотря на то, что из-за распространенности данной ошибки многие пауки-идексаторы научились понимать ее, но это ошибка. Всегда редактируйте свой robots.txt в режиме UNIX и закачивайте файл на сайт в режиме ASCII. Многие FTP-клиенты умеют при закачке в текстовом режиме переводить символы строки из DOS-формата в UNIX-формат. Но некоторые этого не делают.

Комментарии в конце строки:

Согласно стандарту, это верно: Disallow: /cgi-bin/ #this bans robots from our cgi-bin

Но в недавнем прошлом были роботы, которые заглатывали всю строку в качестве директивы. Сейчас такие роботы неизвестны, но оправдан ли риск? Размещайте комментарии на отдельной строке.

Пробелы в начале строки: Disallow: /cgi-bin/

Стандарт ничего не говорит по поводу пробелов, но это считается плохим стилем. И опять-таки, стоит ли рисковать?

Весьма распространено, когда веб-сервер при ошибке 404 (Файл не найден) выдает клиенту особую страницу. При этом веб-сервер не выдает клиенту код ошибки и даже не делает редиректа. В этом случае робот не понимает, что файл robots.txt отсутствует, вместо этого он получит html-страницу с каким-то сообщением. Конечно никаких проблем здесь возникнуть не должно, но стоит ли рисковать? Бог знает, как разберет робот этот html-файл, приняв его за robots.txt, чтобы этого не происходило, поместите хотя бы пустой robots.txt в корневой каталог вашего веб-сервера.

Конфликты директив:

Чтобы вы сделали на месте робота slurp, увидев данные директивы?

User-agent: *

Disallow: /

#

User-agent: slurp

Disallow:

Первая директива запрещает всем роботам индексировать сайт, но вторая директива разрешает роботу slurp это делать. Так что же все-таки должен делать slurp? Мы не можем гарантировать, что все роботы поймут эти директивы правильно. В данном примере slurp должен проиндексировать весь сайт, а все остальные не должны уйти прямо с порога.

Верхний регистр всех букв - плохой стиль:

USER-AGENT: EXCITE

DISALLOW:

Несмотря на то, что стандарт безразлично относится к регистру букв в robots.txt, в именах каталогов и файлов регистр все-таки важен. Лучше всего следовать примерам и в верхнем регистре писать первые буквы только в словах User и Disallow.

Список всех файлов

Еще одна ошибка - перечисление всех файлов в каталоге:

Disallow: /AL/Alabama.html

Disallow: /AL/AR.html

Disallow: /Az/AZ.html

Disallow: /Az/bali.html

Disallow: /Az/bed-breakfast.html

Вышеприведенный пример можно заменить на:

Disallow: /AL

Disallow: /Az

Помните, что начальная наклонная черта обозначает, что речь идет о каталоге. Конечно, ничто не запрещает вам перечислить парочку файлов, но мы речь ведем о стиле. Данный пример взят из файла robots.txt, размер которого превышал 400 килобайт, в нем было упомянуто 4000 файлов! Интересно, сколько роботов-пауков, посмотрев на этот файл, решили больше не приходить на этот сайт.

Есть только директива Disallow! Нет такой директивы Allow, есть только Disallow. Этот пример неверный:

User-agent: Spot

Disallow: /john/

allow: /jane/

Правильно будет так:

User-agent: Spot

Disallow: /john/

Disallow:

Нет открывающей наклонной черты:

Что должен сделать робот-паук с данной директивой:

User-agent: Spot

Disallow: john

Согласно стандартам эта директива запрещает индексировать файл "john" и каталог "john". Но лучше всего, для верности, использовать наклонную черту, чтобы робот мог отличить файл от каталога.

Еще встречаются люди записывающие в файл robots.txt ключевые слова для своего сайта (подумать только - для чего?).

Бывают такие файлы robots.txt, которые были сделаны в виде html-документов. Помните, во FrontPage делать robots.txt не стоит.

Неправильно настроенный сервер

Почему вдруг на запрос robots.txt веб-сервер выдает бинарный файл? Это происходит в том случае, если ваш веб-сервер настроен неправильно, либо вы неправильно закачали на сервер сам файл.

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

http://www.mydomain.com/robots.txt

Вот и все что нужно для проверки.

Некоторые проблемы, связанные с поисковыми роботами.

Незаконченность стандарта (Standart for Robot Exclusion). К сожалению, поскольку поисковые системы появились не так давно, стандарт для роботов находится в стадии разработки, доработки, ну и т.д. Это означает, что в будущем совсем необязательно поисковые машины будут им руководствоваться.

Увеличение трафика.

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

Не все поисковые роботы используют /robots.txt.

На сегодняшний день этот файл обязательно запрашивается поисковыми роботами только таких систем как Altavista, Excite, Infoseek, Lycos, OpenText, WebCrawler и думаю наши поисковые машины.

Использование мета-тагов HTML.

Начальный проект, который был создан в результате соглашений между программистами некоторого числа коммерческих индексирующих организаций на недавнем собрании Distributing Indexing Workshop (W3C), ниже.

На этом собрании обсуждалось использование мета-тагов HTML для управления поведением поисковых роботов, но окончательного соглашения достигнуто не было. Были определены следующие проблемы для обсуждения в будущем:

- Неопределенности в спецификации файла /robots.txt

- Точное определение использования мета-тагов HTML, или дополнительные поля в файле /robots.txt

- Информация "Please visit"

- Текущий контроль информации: интервал или максимум открытых соединений с сервером, при которых можно начинать индексировать сервер.

ROBOTS мета-таги

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

|META NAME="ROBOTS" CONTENT="robot_terms"|

robot_terms - это разделенный запятыми список следующих ключевых слов (заглавные или строчные символы роли не играют): ALL, NONE, INDEX, NOINDEX, FOLLOW, NOFOLLOW.

NONE - говорит всем роботам игнорировать эту страницу при индексации (эквивалентно одновременному использованию ключевых слов NOINDEX, NOFOLLOW).

ALL - разрешает индексировать эту страницу и все ссылки из нее (эквивалентно одновременному использованию ключевых слов INDEX, FOLLOW).

INDEX - разрешает индексировать эту страницу

NOINDEX - неразрешает индексировать эту страницу

FOLLOW - разрешает индексировать все ссылки из этой страницы

NOFOLLOW - неразрешает индексировать ссылки из этой страницы

Если этот мета-таг пропущен или не указаны robot_terms, то по умолчанию поисковый робот поступает как если бы были указаны robot_terms= INDEX, FOLLOW (т.е. ALL). Если в CONTENT обнаружено ключевое слово ALL, то робот поступает соответственно, игнорируя возможно указанные другие ключевые слова. Если в CONTENT имеются противоположные по смыслу ключевые слова, например, FOLLOW, NOFOLLOW, то робот поступает по своему усмотрению (в этом случае FOLLOW).

Если robot_terms содержит только NOINDEX, то ссылки с этой страницы не индексируются. Если robot_terms содержит только NOFOLLOW, то страница индексируется, а ссылки, соответственно, игнорируются.

Дополнительно

KEYWORDS мета-таг.

|META NAME="KEYWORDS" CONTENT="phrases"|

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

DEscriptION мета-таг.

|META NAME="DEscriptION" CONTENT="text"|

text - тот текст, который будет выводиться в суммарном ответе на запрос пользователя к поисковой системе. Сей текст не должен содержать тагов разметки и логичнее всего вписать в него смысл данного документа на пару-тройку строк.

Предполагаемые варианты исключения повторных посещений с помощью мета-тагов HTML

Некоторые коммерческие поисковые роботы уже используют мета-таги, позволяющие осуществлять "связь" между роботом и вебмастером. Altavista использует KEYWORDS мета-таг, а Infoseek использует KEYWORDS и DEscriptION мета-таги.

Индексировать документ один раз или делать это регулярно?

Вебмастер может "сказать" поисковому роботу или файлу bookmark пользователя, что содержимое того или иного файла будет изменяться. В этом случае робот не будет сохранять URL, а броузер пользователя внесет или не внесет это файл в bookmark. Пока эта информация описывается только в файле /robots.txt, пользователь не будет знать о том, что эта страница будет изменяться.

Мета-таг document-STATE может быть полезен для этого. По умолчанию, этот мета-таг принимается с CONTENT=STATIC.

|META NAME="document-STATE" CONTENT="STATIC"|

|META NAME="document-STATE" CONTENT="DYNAMIC"|

Как исключить индексирование генерируемых страниц или дублирование документов, если есть зеркала сервера?

Генерируемые страницы - страницы, порождаемые действием CGI-скриптов. Их наверняка не следует индексировать, поскольку если попробовать провалиться в них из поисковой системы, будет выдана ошибка. Что касается зеркал, то негоже, когда выдаются две разные ссылки на разные сервера, но с одним и тем же содержимым. Чтобы этого избежать, следует использовать мета-таг URL с указанием абсолютного URL этого документа (в случае зеркал - на соответствующую страницу главного сервера).

|META NAME="URL" CONTENT="absolute_url"|





Эта статья взята с сайта SHMEL.ORG
https://www.shmel.org

Адрес этой статьи:
https://www.shmel.org/modules/news/article.php?storyid=49