Итак, поисковые машины для поиска и индексации интернет-ресурсов используют программу-робот. Когда робот обнаруживает новую или измененную страницу, он ее индексирует. В процессе этого страница разбивается на элементы (текст, заголовки, подписи к картинкам, ссылки и так далее), содержание которых заносится в индекс. При этом учитываются позиции слов, то есть их положение в документе или его элементе. Сам документ в базе не хранится. Робот индексирует страницы по их истинным адресам. Это значит, что, если на странице стоит redirect, робот воспримет его как ссылку на новый адрес и внесет ее в очередь на индексирование (если она удовлетворяет описанным выше правилам). То же самое произойдет, если в одном из фреймов будет стоять ссылка на другой сервер. В частности, если эта ссылка находится вне доменов, разрешенных по умолчанию, страница НЕ будет проиндексирована.
Когда робот-индексатор поисковой машины приходит на web-сайт, он прежде всего проверяет, нет ли в корневом каталоге сайта служебного файла robots.txt.
Если робот обнаруживает этот документ, все дальнейшие действия по индексированию сайта осуществляются в соответствии с указаниями robots.txt. Вы можете запретить доступ к определенным каталогам и/или файлам своего сайта любым роботам-индексаторам или же роботам конкретной поисковой системы. Запрет на индексацию ряда страниц может появиться, например, из соображений секретности или из желания не индексировать одинаковые документы в разных кодировках. Чем меньше ваш сервер, тем быстрее робот его обойдет. Поэтому запретите в файле robots.txt все документы, которые не имеет смысла индексировать (например, файлы статистики или списки файлов в директориях).
Размещение файла robots.txt
Робот ищет robots.txt только в корневом каталоге Вашего сервера. Под именем сервера здесь понимаются доменное имя и, если он есть, порт.
Размещать на сайте несколько файлов robots.txt, размещать robots.txt в подкаталогах (в том числе подкаталогах пользователей типа www.hostsite.ru/~user1/) бессмысленно: "лишние" файлы просто не будут учтены роботом. Таким образом, вся информация о запретах на индексирование подкаталогов сайта должна быть собрана в едином файле robots.txt в "корне" сайта.
Имя robots.txt должно быть набрано строчными (маленькими) буквами, поскольку имена интернет-ресурсов (URI) чувствительны к регистру.
Ниже приведены примеры правильных и неправильных размещений robots.txt.
- Правильные:
- http://www.w3.org/robots.txt
- http://w3.org/robots.txt
- http://www.w3.org/robots.txt
(В данном случае все эти три ссылки ведут на один и тот же файл.)
- Неправильные:
- http://www.yoursite.ru/publick/robots.txt
- http://www.yoursite.ru/~you/robots.txt
- http://www.yoursite.ru/Robots.txt
- http://www.yoursite.ru/ROBOTS.TXT
Формат файла robots.txt
Следующий простой файл robots.txt запрещает индексацию всех страниц сайта всем роботам, кроме робота Рамблера (его зовут StackRambler), которому, наоборот, разрешена индексация всех страниц сайта.
# Инструкции для всех роботов
User-agent: *
Disallow: /
# Инструкции для робота Рамблера
User-agent: StackRambler
Disallow:
Группы инструкций для отдельных роботов: User-agent
Любой файл robots.txt состоит из групп инструкций. Каждая из них начинается со строки User-agent, указывающей, к каким роботам относятся следующие за ней инструкции Disallow.
Для каждого робота пишется своя группа инструкций. Это означает, что робот может быть упомянут только в одной строке User-agent, и в каждой строке User-agent может быть упомянут только один робот.
Исключение составляет строка User-agent: *. Она означает, что следующие за ней Disallow относятся ко всем роботам, кроме тех, для которых есть свои строки User-agent.
Инструкции: Disallow
В каждой группе, вводимой строкой User-agent, должна быть хотя бы одна инструкция Disallow. Количество инструкций Disallow не ограничено.
Строка "Disallow: /dir" запрещает посещение всех страниц сервера, полное имя которых (от корня сервера) начинается с "/dir". Например: "/dir.html", "/dir/index.html", "/directory.html".
Чтобы запрещать посещение именно каталога "/dir", инструкция должна иметь вид: "Disallow: /dir/".
Для того, чтобы инструкция что-либо запрещала, указанный в ней путь должен начинаться с "/". Соответственно, инструкция "Disallow:" не запрещает ничего, то есть все разрешает. Внимание: точно так же и инструкции "Disallow: *", "Disallow: *.doc", "Disallow: /dir/*.doc" не запрещают ничего, поскольку файлов, имя которых начинается со звездочки или содержит ее, не существует! Использование регулярных выражений в строках Disallow, равно как и в файле robots.txt вообще, не предусмотрено.
Строка с полем Disallow может запретить индексирование документов только с одним префиксом. Для запрета нескольких префиксов нужно написать несколько строк. Например, нижеприведенный файл запрещает индексирование документов, начинающихся с "/cgi-bin /forum", которых, скорее всего, не существует (а не документов с префиксами "/cgi-bin" и "/forum").
User-Agent: *
Disallow: /cgi-bin /forum
В строках с полем Disallow записываются не абсолютные, а относительные префиксы. То есть файл:
User-Agent: *
Disallow: www.myhost.ru/cgi-bin
запрещает, например, индексирование документа http://www.myhost.ru/www.myhost.ru/cgi-bin/counter.cgi, но НЕ запрещает индексирование документа http://www.myhost.ru/cgi-bin/counter.cgi.
К сожалению, инструкций Allow в файлах robots.txt не бывает. Поэтому даже если закрытых для индексирования документов очень много, Вам все равно придется перечислять именно их, а не немногочисленные "открытые" документы. Продумайте структуру сайта, чтобы закрытые для индексирования документы были собраны по возможности в одном месте.
Пустые строки и комментарии
Пустые строки допускаются между группами инструкций, вводимыми User-agent.
Инструкция Disallow учитывается, только если она подчинена какой-либо строке User-agent - то есть если выше нее есть строка User-agent.
Любой текст от знака решетки "#" до конца строки считается комментарием и игнорируется.
Использование META-тегов "Robots"
В отличие от файлов robots.txt, описывающих индексацию сайта в целом, тег управляет индексацией конкретной web-страницы. При этом роботам можно запретить не только индексацию самого документа, но и проход по имеющимся в нем ссылкам.
Инструкции по индексации записываются в поле content. Возможны следующие инструкции:
- NOINDEX - запрещает индексирование документа;
- NOFOLLOW - запрещает проход по ссылкам, имеющимся в документе;
- INDEX - разрешает индексирование документа;
- FOLLOW - разрешает проход по ссылкам.
- ALL - равносильно INDEX, FOLLOW
- NONE - равносильно NOINDEX, NOFOLLOW
- Значение по умолчанию: .
В следующем примере робот может индексировать документ, но не должен выделять из него ссылки для поиска дальнейших документов:
Имя тега, названия и значения полей нечувствительны к регистру.
В поле content дублирование инструкций, наличие противоречивых инструкций и т.п. не допускается; в частности, значение поле content не может иметь вид "none, nofollow".
Чтобы "сказать" роботу, что ему нужно проиндексировать страницу через, к примеру2 дня надо включить тег и через два дня робот проиндексирует вашу страницу снова (на робот Яндекса не действует, так как он индексирует страницы по своему графику работы).
Чтобы запретить индексирование определенных фрагментов текста в документе, пометьте их тегами (так, во всяком случае, объявляется для робота Яндекса, может быть для остальных тоже).
Выбор главного виртуального хоста из нескольких зеркал
Если ваш сайт находится на одном сервере (одном IP), но виден во внешнем мире под разными именами (зеркала, разные виртуальные хосты), рекомендуется выбрать то имя, под которым вы хотите быть проиндексированы. В противном случае робот выберет главное зеркало самостоятельно, а остальные имена будут запрещены к индексации. Для того, чтобы индексировалось выбранное вами зеркало, достаточно запретить индексацию всех остальных зеркал при помощи robots.txt. Это можно сделать, используя нестандартное расширение robots.txt - директиву Host, в качестве ее параметра указав имя основного зеркала. Если www.glavnoye-zerkalo.ru - основное зеркало, то robots.txt должен выглядеть примерно так:
User-Agent: *
Disallow: /forum
Disallow: /cgi-bin
Host: www.glavnoye-zerkalo.ru
В целях совместимости с роботами, которые не полностью следуют стандарту при обработке robots.txt, директиву Host необходимо добавлять в группе, начинающейся с записи User-Agent, непосредственно после записей Disallow. Аргументом директивы Host является доменное имя с номером порта (80 по умолчанию), отделенным двоеточием. Если какой-либо сайт не указан в качестве аргумента для Host, для него подразумевается наличие директивы Disallow: /, т.е. полный запрет индексации (при наличии в группе хотя бы одной корректной директивы Host). Таким образом, файлы robots.txt вида
User-Agent: *
Host: www.myhost.ru
и
User-Agent: *
Host: www.myhost.ru:80
эквивалентны и запрещают индексирование как www.otherhost.ru, так и www.myhost.ru:8080.
Параметр директивы Host обязан состоять из одного корректного имени хоста (т.е. соответствующего RFC 952 и не являющегося IP-адресом) и допустимого номера порта. Некорректно составленные строчки Host игнорируются.
# Примеры игнорируемых директив Host
Host: www.myhost-.ru
Host: www.-myhost.ru
Host: www.myhost.ru:0
Host: www.my_host.ru
Host: .my-host.ru:8000
Host: my-host.ru.
Host: my..host.ru
Host: www.myhost.ru/
Host: www.myhost.ru:8080/
Host: http://www.myhost.ru
Host: www.mysi.te
Host: 213.180.194.129
Host: www.firsthost.ru,www.secondhost.ru
Если у вас сервер Apache, то можно вместо использования директивы Host задать robots.txt с использованием директив SSI:
User-Agent: *
Disallow: /
В этом файле роботу запрещен обход всех хостов, кроме www.главное_имя.ru. Как включать SSI, можно прочесть в документации по вашему серверу или обратиться к вашему системному администратору. Проверить результат можно, просто запросив страницы:
- http://www.главное_имя.ru/robots.txt
- http://www.другое_имя.ru/robots.txt
и т.д. Результаты должны быть разные.
Рекомендации для веб-сервера Русский Apache В robots.txt на сайтах с русским апачем должны быть запрещены для роботов все кодировки, кроме основной. Если кодировки разложены по портам (или серверам), то надо выдавать на разных портах (серверах) РАЗНЫЙ robots.txt. А именно, во всех файлах robots.txt для всех портов/серверов, кроме "основного", должно быть написано:
User-Agent: *
Disallow: /
Для этого можно использовать механизм SSI, описанный выше. Если кодировки в вашем Apache выделяются по именам <виртуальных> директорий, то надо написать один robots.txt, в котором должны быть примерно такие строчки (в зависимости от названий директорий):
User-Agent: *
Disallow: /dos
Disallow: /mac
Disallow: /koi |