Мануал по robots.txt

Поисковые сервера всегда перед индексацией вашего ресурса ищут в корневом каталоге вашего домена файл с именем "robots.txt" (http://www.mydomain.com/robots.txt). Этот файл сообщает роботам (паукам-индексаторам), какие файлы они могут индексировать, а какие нет.

Формат файла robots.txt - особый. Он состоит из записей. Каждая запись состоит из двух полей: строки с названием клиентского приложения (user-agent), и одной или нескольких строк, начинающихся с директивы Disallow:

<Поле> ":" <значение>

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/article/1.

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

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

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:

Значения мета-тега robots

Данному мета-тегу можно присвоить варианта четыре значений. Атрибут content может содержать следующие значения:

index, noindex, follow, nofollow

Если значений несколько, они разделяются запятыми.

В настоящее время лишь следующие значения важны:

Директива INDEX говорит роботу, что данную страницу можно индексировать.

Директива FOLLOW сообщает роботу, что ему разрешается пройтись по ссылкам, присутствующим на данной странице. Некоторые авторы утверждают, что при отсутствии данных значений, поисковые сервера по умолчанию действуют так, как если бы им даны были директивы INDEX и FOLLOW. К сожалению это не так по отношению к поисковому серверу Inktomi. Для Inktomi значения по умолчанию равны "index, nofollow".

Итак, глобальные директивы выглядят так:

Индексировать всё = INDEX, FOLLOW

Не индексировать ничего = NOINDEX,NOFLLOW

Примеры мета-тега robots:

<META NAME=ROBOTS" CONTENT="NOINDEX, FOLLOW">
<META NAME=ROBOTS" CONTENT="INDEX, NOFOLLOW">
<META NAME=ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

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

Согласно стандарту, это верно:

Disallow: /cgi-bin/ #this bans robots from our cgi-bin

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

Несколько директив Disallow в одной строке:

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

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

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

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

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

Комментарии

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

Disallow: bob #comment

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

Пробелы в начале строки:

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

 Disallow: /cgi-bin/

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

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

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

User-agent: Spot
Disallow: john

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

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

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

Особенности Google:

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

User-agent: googlebot
Disallow: *.cgi

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

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

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

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

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

Перевод строки в формате DOS:

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

Примеры

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

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

Эксклюзив

Предположим у Вас есть страницы Вашего сайта вида - http://www.you_site.ru/begun.php?book=zoom или http://www.you_site.ru/begun.php?cool=books
Возникает вопрос, как же мне запретить индексировать все эти страницы, ведь они будут создаваться и создаваться, не буду же я каждую страницу прописывать в robots.txt
Ответ на этот вопрос очень прост. Вам будет достаточно запретить индексацию страницы begun.php, то есть так:

Disallow: begun.php
или так
Disallow: /begun.php

а теперь сюрприз, запретив таким образом старницу begun.php Ваша страница begun.php всё же будет индексироваться если урл будет выглядить например так http://www.you_site.ru/chtoto/begun.php?book=zoom
Чтобы поисковики не индексировали и в этом случае, прийдется таки дописывать каталоги, то есть в этом случае нужно будет написать так:

Disallow: /chtoto/begun.php

В следующей ситуации мы запрещаем индексировать все страницы у которых идут сессии, то есть страница page3.php будет нормально проиндексирована, а все её копии, начинающиеся на page3.php;phpessionid будут запрещены к индексации.

User-agent: *
Disallow: /page3.php;phpessionid

p.s. Наличие robots.txt на сервере не является обязательным, его отсутствие, как и пустой файл robots.txt, или неправильно составленный, будет интерпретироваться роботом как разрешение на полную индексацию сайта. Проверить свой robots.txt Вы можете на этой странице - http://www.yandex.ru/cgi-bin/test-robots А почитать интересную информацию, задать вопрос профессионалам и другое, Вы можете на этом форуме - http://www.webmasterworld.com/forum93/ О том, как работает робот yandex, можно прочитать здесь - http://webmaster.yandex.ru/faq.xml?id=502499


09.07.2007 22:10

Комментарии

Подскажите пожалуйста, возможен вариант в robots.txt запретить к индексации весь сайт, кроме страниц которые указаны в карте сайта. А то у моего сайта очень много мусорных страниц (профильных, страниц внутреннего поиска, и дублей страниц разного рода), по отдельности запрещать эти страницы в роботсе не реально. заранее спасибо! ;-(
Maks131313 | 27.12.2010 16:15