О файле robots.txt

Рубрика: Интернет штучки

31 июля 2009

o-fajle-robotstxt-pic1Периодически возникает необходимость закрыть от поисковых роботов те или иные служебные папки и дублирующийся контент на сайтах. Сделать это можно при помощи файла robots.txt. В файле можно указать какие файлы и папки сайта какие роботы могут индексировать, можно запретить часть контента для одних и открыть для других. Файл описывается в документе опубликованном на http://www.robotstxt.org/orig.html. Стандарт нестрогий и сейчас к нему есть несколько общепринятых дополнений, которые понимают все основные поисковые роботы.
Для корректной обработки файл должен находится в корневой директории сайта (http://site.ru/robots.txt) и называться robots.txt и никак иначе (регистр букв имеет значение). Внутри файл состоит из названия поискового робота “User-agent:” и списка правил для него. Названия самых крупных поисковых роботов:

#Яндекc
User-agent: Yandex

#Гугл
User-Agent: googlebot

#Рамблер
User-agent: StackRambler

#Yahoo
User-agent: Slurp

#MSN
User-agent: msnbot

#Правило общее для всех роботов:
User-agent: *

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

После указания кому, мы должны написать что делать. Для этого существует документированная запрещающая директива “Disallow:” и недокументированная, но поддерживаемая на данный момент всеми крупными роботами разрешающая “Allow:“. Для того, чтобы запретить индексацию директории нужно указать ее путь, причем для каталогов путь должен начинаться с символа “/” и им же заканчиваться. Например “Disallow: /dir/” закроет для роботов каталог “/dir”, который находится в корне сайта, и все вложенные каталоги и файлы, а если написать “Disallow:/dir”, то будут закрыты все документы лежащие в корне и начинающиеся на dir, к примеру каталог “/dir1″,  файл “/director.htm” и т.д. Чтобы закрыть файл завершающую черту ставит не надо. Пример:

#обращаемся к роботу гугла
User-Agent: googlebot
Disallow: /cgi-bin/ #закрываем директорию cgi-bin в корне сайта
Disallow:/css/main.css
#закрываем файл main.css, который лежит в директории css

Директива “Allow:” действует по тому же принципу. Пример:

#обращаемся к роботу яндекса
User-agent: Yandex
Allow: /uploads/images/ #открываем папку images в папке uploads
Disallow: /uploads/
#закрываем папку uploads

Директивы выполняются по мере поступления, при этом приоритет имеют те, которые находятся ближе к началу. Пример:

#обращаемся к роботу яндекса
User-agent: Yandex
Disallow: /test/ #закрываем папку test
Allow: /test/images/
#доступ к папке images будет закрыт т.к. верхнее правило имеет
#приоритет

#обращаемся к роботу яндекса
User-agent: Yandex
Allow: /test/images/ #папка images в папке test открыт
Disallow: /test/
#закрываем папку test при этом папка images будет открыта
#т.к. верхнее правило имеет приоритет

Если необходимо разрешить или запретить к индексации весь сайт без исключений, то можно использовать два решения:

#обращаемся ко всем роботам
User-agent: *
Allow: / #или
Disallow:
#директивы равнозначны и разрешают к индексации весь сайт

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

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

#обращаемся ко всем роботам
User-agent: *
Disallow: /abc* # блокирует все файлы и папки начинающимся с abc
Disallow: /abc*$ # равнозначное выражение
Disallow: /abc # равнозначное выражение без спецсимволов
Disallow: /modules$
# запрещает только /modules, не запрещает /modules.html

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

При большом количестве страниц на сайте или при сильной нагрузке на сервер поисковые роботы могут затруднять работу создавая большое количество запросов. Чтобы ограничить их активность есть директива “Crawl-delay:“. Она задает время после закачки страницы в секундах, через которое можно закачивать следующую страницу. Робот Гугла (googlebot) эту директиву не обрабатывает. Гарантированно она работает с Яндексом (Yandex).

Еще одна дополнительная директива – “Host:“. При запросе сайта, мы можем набирать название с www или без и видеть один и тот же сайт, а для поисковиков это 2 разных сайта, которые “склеиваются” и показывается результат только для того, который считается “главным”. Данная директива нужна, чтобы указать в явном виде главное зеркало сайта. Опять же Гугл не понимает эту директиву, но с Яндексом она работает, хотя и является необязательной и не всегда оказывает результат на выдачу. Пример для обеих директив:

#обращаемся ко всем роботам
User-agent: *
Disallow: /abc* # блокирует все файлы и папки начинающимся с abc

#обращаемся к роботу Яндекса
User-agent: Yandex
Crawl-delay: 5 #разрешает забирать страницы раз в 5 секунд
Host: www.site.ru
#главное зеркало сайта – www.

Несколько особняком стоит директива “Sitemap:“. Она помогает поисковым роботам быстрее находить файл с картой сайта. При ее применении не нужно указывать “User-agent”. Лучше всего располагать ее через пустую строку в конце файла. Пример:

#обращаемся ко всем роботам
User-agent: *
Disallow: /abc* # блокирует все файлы и папки начинающимся с abc

Sitemap: www.site.ru/sitemap.xml
#показывает путь к файлу sitemap.xml

При написании файла robots.txt необходимо соблюдать несколько общепринятых правил, которые позволяют роботам правильно расшифровывать инструкции.  В общем случае файл обязательно должен начинаться с указания “User-agent:”, сразу после нее, без пустых строк, должна находится хотя бы одна директива “Disallow:”. Директивы “User-agent:” должны быть отделены друг от друга пустыми строками. Комментарии начинаются с символа “#”, если они располагаются внутри директивы “User-agent:”, то не должны быть на отдельной строке. Все дополнительные директивы должны идти ближе к концу файла т.к. могут быть не поняты роботом. В каждой директиве “Disallow:” должен быть только одно правило.

Еще одно добавление- мета тэг robots. Он не относится напрямую к файлу robots.txt, но выполняет сходные функции. Располагаться должен между <head> и </head> страницы сайта. Синтаксис следующий:

<meta name=”robots” content=”noindex, nofollow” />
noindex означает не индексировать страницу, nofollow – не следовать по ссылкам. Могут быть варианты, например:

<meta name=”robots” content=”noindex, follow” />
не индексировать данную страницу, но пройти по ссылкам;

<meta name=”robots” content=”index, nofollow” />
индексировать страницу, но не идти по ссылкам;

<meta name=”robots” content=”index, follow” />
разрешено индексировать и идти по ссылкам.

Важно! не стоит закрывать при помощи robots.txt папки и файлы, в которых может содержаться конфиденциальная информация. Этот метод не дает достаточной защиты т.к. прячет файлы только от поисковиков, а человек, просмотрев этот файл, наоборот может найти необходимую информацию о расположении важных файлов и папок. Устанавливать парольную защиту следует через файл “.htaccess” или другими методами.

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

В моей статье можно почитать о robots.txt для wordpress.

Статьи по теме

3 комментария к статье: О файле robots.txt

Avatar

adw0rd

31 июля 2009 в 20:12

Avatar

xela

3 августа 2009 в 15:28

:) ага, но ты писал про роботс к вордпрессу, а я копался вообще. Про вордпресс тоже напишу позднее, а то иногда надо что-то сделать, а оно уже подзабылось и давай по второму кругу копать.

Avatar

adw0rd

3 августа 2009 в 15:32

ага :)

Оставить комментарий к статье: О файле robots.txt

Сколько же еще продлится эта невыносимая жара?! Совершенно ничего не хочется делать, никого не хочется фотографировать, даже из дома выходить не хочется.

Музыкальная пауза


Скачайте флэш-плеер