DATAWORD - наблюдения оптимизатора - http://dataword.info

Управление индексацией на сайте через robots.txt

Опубликовано августа 16, 2007 @ 10:41 pm в разделе SEO-приёмы | 220 Comments

Наверняка большинство из читающих мою заметку людей уже знают о существовании этого в общем-то незатейливого файла. Факт в том, что его незатейливость и простота может довольно корректно указать поисковой системе, что же всё-таки индексировать на вашем сайте, а что следует оставить "в тени".

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

Начнём, пожалуй, с истории рождения стандарта robots.txt. Как гласит история, стандарт robots.txt был принят консенсусом 30 января 1994 года и опубликован, с тех пор используется большинством известных поисковых машин.

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

Как например, компания Yahoo, которая ввела для своего поискового бота YahooSlurp, дополнительную возможность запрета индексации типов файлов по их расширению, добавив возможность использования символов * и $ в полях Disallow. Позже эта возможность была одобрена Google, а затем и "Яндексом" в конце 2007 года. "Яндекс" также добавил возможность использования дополнительного поля Host для определения основного зеркала сайта.

Недавно была добавлена возможность использования ещё одного поля.

Sitemap: http://www.site.ru/sitemap.xml


Поле Sitemap позволяет поисковой системе указать, где находится специальным образом сгенерированная карта Sitemap для сайта, что помогает снять обязанность веб-мастеров каждый раз загружать новую карту Sitemap на сервер поисковой системе и позволить поисковой системе самой загружать Sitemap с сайта. Возможность использования директивы в настоящий момент поддерживается в Google, Yahoo, Ask, Bing и "Яндекс". Тут можно подробнее ознакомиться со стандартом [1] Sitemaps.

Что такое robots.txt?

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

Структура robots.txt:

Файл состоит из полей. Структура полей такова: сначала идёт информация о том, какой поисковик должен следовать указаниям в директиве (строка содержит User-Agent поискового бота или *, как рекомендация для всех поисковых систем), далее идёт поле Disallow, в котором указывается название объекта, который необходимо скрыть от индексирования.

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

Стандарт robots.txt поддерживает комментарии. Всё, что начинается от символа # до конца строки, является комментарием.

Строки файла robots.txt являются регистрозависимыми (primer.html и Primer.html - разные файлы).

Следует заметить любопытный факт, что файл robots.txt создавался и создаётся с основной целью – запрета индексации, следовательно, и все поля, в нём прописанные, явно указывают на запрет индексации частей сайта. Однако поисковые системы постепенно вводят поле Allow, которое всегда должно стоять раньше директивы Disallow, но пока официально оно не признано, хоть и используется некоторыми поисковыми системами (Например, "Яндексом", Google и Bing).

Некоторые поисковые системы используют собственные "информационные" директивы.  В Bing Live и "Яндексе" через robots.txt реализована установка значения скорости индексации документа. Делается это так:

User-agent: MSNbot
Crawl-delay: n где n - величина задержки в секундах перед индексированием очередной страницы.

User-agent: Yandex
Crawl-delay: n где n - величина задержки в секундах перед индексированием очередной страницы.

В начале 2009 года в поисковой системе "Яндекс" введена директива Clean-param, при помощи которой веб-мастер может указать, как индексировать динамические параметры, которые не влияют на содержание страницы. Это могут быть различные идентификаторы сессий, пользователей и т. д., что увеличивает эффективность индексации страницы. (Ознакомиться с ней можно [2] здесь).

Пример одного из составленных файлов robots.txt:

User-agent: *
Disallow: /User-agent: Googlebot
Disallow: /text/

Это важно знать:

1) Файл robots.txt должен находиться только в корневой директории сайта, только тогда он будет учитываться поисковыми системами.

2) Называть файл необходимо robots.txt, Robots.txt будет уже ошибкой.

3) На каждой строке должно быть поле Disallow, запрещающее индексацию только одного объекта. Если нужно запретить несколько директорий или файлов, то для этого пишем поле Disallow на каждой новой строке. В записи должно быть хотя бы одно поле Disallow. Также не забудьте про поле User-Agent - оно не должно быть пустым (либо *, либо имя робота). Если используется директива Allow, то она всегда должна стоять раньше Disallow.

4) Запомните простые комбинации:

Disallow: - разрешение индексировать всё содержимое сайта,
Disallow: / - запрет на индексацию всего сайта.
Disallow: /name – запрет на индексацию любых файлов и директорий, которые называются или имеют в своём названии name.
Disallow: /name/ - запрет на индексацию директории name.
Disallow: /*.gif$ - запрет на индексацию всех файлов, имеющих расширение .gif.
Disallow: /name.php – запрет на индексацию файла name.php.
Disallow: /name.php?action=print – запрет индексации переменной, например, страниц для печати.
Allow: / - всё наоборот (разрешается индексировать), синтаксис такой же, как и с Disallow
# - при помощи решётки можно писать комментарии: они не учитываются роботами поисковых систем и носят сугубо информативный  характер.

5) Поле Host используется "Яндексом" для определения основного зеркала сайта. Например, так: Host: www.site.ru. Это поле говорит поисковой системе "Яндекс", что в результатах поиска лучше выводить именно такую ссылку на ваш сайт (с www).
Параметр директивы Host обязан состоять из одного корректного имени хоста (т.е. соответствующего RFC 952 и не являющегося IP-адресом) и допустимого номера порта. Важно помнить, что если вы хотите, чтобы поисковая система "Яндекс" приняла во внимание директиву Host в вашей файле, то создайте одинаковые файлы robots.txt на всех "зеркалах" сайта. Только тогда зеркальщик "Яндекс" выделит главное зеркало,  согласно данным в Host.

6) Поле Sitemap используется для указания поисковой системе, где находится сгенерированная для поисковых систем карта сайта.(Sitemap: http://www.site.ru/sitemap.xml). Применяется в Google, Ask, Yahoo, Bing и "Яндекс".

User-Agent: Yandex
http://www.site.ru/sitemap-main.xml
http://www.site.ru/folder/sitemap-second.xml
# В случае, когда на сайте используется несколько файлов Sitemap, то их желательно перечислить в файле robots.txt

7) Если инструкции задаются для нескольких поисковых систем, то поля User-Agent
должны вводиться через перевод строки (клавишу Enter).

Вот так:

User-Agent: msnbot
User-Agent: Slurp
Disallow: /admin/

Ошибки в файле robots.txt:

1) Неверный порядок расположения полей:

Неправильно:

Disallow: /
User-agent: *

Правильно:

User-agent: *
Disallow: /

2) Совершаются синтаксические ошибки:
Нет пустой строки:

Неправильно:

User-agent: Googlebot
Disallow: /
User-agent: *
Disallow:

Правильно:

User-agent: Googlebot
Disallow: /User-agent: *
Disallow:

Ошибки в синтаксисе Disallow:

Disallow: * (приводит к запрету на индексацию всего сайта).
Disallow: /text/ /text2/ (нельзя использовать одно поле для разных директорий).

Правильно:

Disallow: /text/
Disallow: /text2/

Поле User-Agent:

User-agent: (поле не должно быть пустым)

Поле Host:

Неправильно:

Host: http://www.site.ru/ # (нельзя использовать протокол и слеш в конце)
Host: .site.ru # (любые ошибки в написании доменных имён не допустимы)
Host: 200.114.47.5 # (указан IP вместо адреса)

Правильно:

Host: www.site.ru
или
Host: www.site.ru:8080
# - если ваш сайт доступен по какому-то другому порту (стандартный порт 80, если используется именно он, то его не указывают).

Желательно делать так:

Не пишите все поля с больших букв, комментарии лучше переносить на новую строку.  С осторожностью используйте дополнительные директивы (Host, Crawl-Delay): убедитесь, что поисковые системы способны их правильно трактовать. Неправильные действия могут вызвать недопонимание тех систем, которые не используют эти поля, а также не забывайте, что поле Disallow должно быть даже тогда, когда некоторые поисковые системы игнорируют его. Не создавайте размер файла robots.txt больше, чем 256 килобайт.
На этом всё, спасибо за внимание.


Статья напечана с сайта DATAWORD - наблюдения оптимизатора: http://dataword.info

Адрес статьи: http://dataword.info/robots.php

URLs in this post:
[1] Sitemaps: http://dataword.info/sitemaps-google.php
[2] здесь: http://help.yandex.ru/webmaster/?id=996567#1041216