У вас есть вопрос по рекламе в интернете и раскрутке сайтов? Задайте его здесь и вам ответят. Вы уже всё знаете? Помогите тем, кто знает пока не всё. Правила форума|
Сделать стартовой|Добавить в избранное.
23 Дек 2007 Вс 02:43 Яндекс - новая директива Allow для файла robots.txt
Использование robots.txt
Директива User-agent.
Использование директив Disallow и Allow.
Использование спецсимволов "*" и "$".
Директива Sitemap.
Директива Host.
Директива Crawl-delay.
Директива Clean-param.
Дополнительная информация.
Директива User-agent.
Управлять доступом робота Яндекса к вашему сайту вы можете при помощи файла robots.txt. Робот Яндекса поддерживает стандарт описания http://www.robotstxt.org/wc/norobots.html с расширенными возможностями, описанными ниже.
В роботе Яндекса используется сессионный принцип работы, на каждую сессию формируется определенный пул страниц, которые планирует закачать робот. Сессия начинается с закачки robots.txt сайта, если его нет, он не текстовый или на запрос робота возвращается HTTP-код отличный от '200', считается, что доступ роботу не ограничен. В самом robots.txt проверяется наличие записей, начинающихся с 'User-agent:', в них ищутся подстроки 'Yandex', либо '*' (регистр значения не имеет), причем, если обнаружено 'User-agent: Yandex', директивы для 'User-agent: *' не учитываются. Если записи 'User-agent: Yandex' и 'User-agent: *' отсутствуют, считается, что доступ роботу не ограничен.
Использование директив Disallow и Allow.
Чтобы запретить доступ робота к некоторым частям сайта или сайту целиком, используйте директиву 'Disallow'. Примеры:
User-agent: Yandex
Disallow: / # блокирует доступ ко всему сайту
User-agent: Yandex
Disallow: /cgi-bin # блокирует доступ к страницам начинающимся с '/cgi-bin'
Примечание:
Недопустимо наличие пустых переводов строки между директивами 'User-agent' и 'Disallow' ('Allow'), а также между самими 'Disallow' ('Allow') директивами.
Кроме того, в соответствии со стандартом перед каждой директивой 'User-agent' рекомендуется вставлять пустой перевод строки.
Символ '#' предназначен для описания комментариев. Все, что находится после этого символа и до первого перевода строки не учитывается.
Чтобы разрешить доступ робота к некоторым частям сайта или сайту целиком, используйте директиву 'Allow'. Примеры:
User-agent: Yandex
Allow: /cgi-bin
Disallow: /
# запрещает скачивать все, кроме страниц начинающихся с '/cgi-bin'
Совместное использование директив.
Если для данной страницы сайта подходит несколько директив, то выбирается первая в порядке появления в выбранном User-agent блоке. Примеры, если:
User-agent: Yandex
Allow: /cgi-bin
Disallow: /
# запрещает скачивать все, кроме страниц начинающихся с '/cgi-bin'
Отсутствие параметров у директивы трактуется следующим образом:
User-agent: Yandex
Disallow: # тоже что и Allow: /
User-agent: Yandex
Allow: # тоже что и Disallow: /
Использование спецсимволов "*" и "$".
При указании путей директив Allow-Disallow можно использовать спецсимволы '*' и '$', задавая, таким образом, определенные регулярные выражения. Спецсимвол '*' означает любую (в том числе пустую) последовательность символов. Примеры:
User-agent: Yandex
Disallow: /cgi-bin/*.aspx # запрещает '/cgi-bin/example.aspx' и '/cgi-bin/private/test.aspx'
Disallow: /*private # запрещает не только '/private', но и '/cgi-bin/private'
Спецсимвол '$'.
По умолчанию к концу каждого правила, описанного в robots.txt, приписывается '*', например:
User-agent: Yandex
Disallow: /cgi-bin* # блокирует доступ к страницам начинающимся с '/cgi-bin'
Disallow: /cgi-bin # то же самое
чтобы отменить '*' на конце правила, можно использовать спецсимвол '$', например:
User-agent: Yandex
Disallow: /example$ # запрещает '/example', но не запрещает '/example.html'
User-agent: Yandex
Disallow: /example # запрещает и '/example', и '/example.html'
User-agent: Yandex
Disallow: /example$ # запрещает только '/example'
Disallow: /example*$ # так же, как 'Disallow: /example' запрещает и /example.html и /example
Директива Sitemap.
Если вы используете описание структуры вашего сайта в формате sitemaps.xml, и хотите, чтобы робот узнал о ней, укажите путь к sitemaps.xml, в качестве параметра директивы 'Sitemap' (если файлов несколько, укажите все), примеры:
Робот запомнит пути к sitemaps.xml, обработает файлы и будет использовать результаты при последующем формировании сессий закачки.
Директива Host.
Если ваш сайт имеет зеркала, специальный робот зеркальщик определит их и сформирует группу зеркал вашего сайта. В поиске будет участвовать только главное зеркало. Вы можете указать его у всех зеркал при помощи robots.txt, используя директиву 'Host', определив в качестве ее параметра имя главного зеркала. Директива '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'('Allow'). Аргументом директивы 'Host' является доменное имя с номером порта (80 по умолчанию), отделенным двоеточием.
#Пример корректно составленного robots.txt, при обработке которого директива Host учитывается
User-Agent: *
Disallow:
Host: www.myhost.ru
#Примеры некорректно составленных robots.txt, при обработке которых директива Host может не учитываться
#1.
User-Agent: *
Host: www.myhost.ru
Важно: параметр директивы Host обязан состоять из одного корректного имени хоста (т.е. соответствующего RFC 952 и не являющегося IP-адресом) и допустимого номера порта. Некорректно составленные строчки 'Host:' игнорируются.
# domen.myhost.ru является главным зеркалом www.domen.myhost.ru
# Корректное использование директивы Host
User-Agent: *
Disallow:
Host: domen.myhost.ru
# Некорректное использование директивы Host
User-Agent: *
Disallow:
Host: myhost.ru
Директива Crawl-delay.
Если сервер сильно нагружен и не успевает отрабатывать запросы на закачку, воспользуйтесь директивой "Crawl-delay". Она позволяет задать поисковому роботу минимальный период времени (в секундах) между концом закачки одной страницы и началом закачки следующей. В целях совместимости с роботами, которые не полностью следуют стандарту при обработке robots.txt, директиву "Crawl-delay" необходимо добавлять в группе, начинающейся с записи "User-Agent", непосредственно после директив "Disallow" ("Allow").
Поисковый робот Яндекса поддерживает дробные значения Crawl-Delay, например, 0.5. Это не гарантирует, что поисковый робот будет заходить на ваш сайт каждые полсекунды, но дает роботу больше свободы и позволяет ускорить обход сайта.
Примеры:
User-agent: Yandex
Crawl-delay: 2 # задает таймаут в 2 секунды
Директива Clean-param.
Если адреса страниц вашего сайта содержат динамические параметры которые не влияют на их содержимое (например: идентификаторы сессий, пользователей, рефереров и т.п.), вы можете описать их при помощи директивы 'Clean-param'. Робот Яндекса, используя эту информацию, не будет многократно перезакачивать дублирующуюся информацию. Таким образом, увеличится эффективность обхода вашего сайта, снизится нагрузка на сервер.
параметр 'ref=' используется только для того, чтобы отследить с какого ресурса был сделан запрос и не меняет содержимое, по всем трем адресам будет показана одна и та же страница с книгой 'book_id=123'. Тогда, если в robots.txt указать:
В первом поле через '&' перечисляются параметры, которые нужно не учитывать. Во втором поле указывается префикс пути страниц, для которых нужно применить правило.
Примечание:
Префикс может содержать регулярное выражение в формате, аналогичном robots.txt, но с некоторыми ограничениями: можно использовать только символы A-Za-z0-9.-/*_. При этом * трактуется так же, как в robots.txt. В конец префикса всегда неявно дописывается '*', то есть:
Сlean-param: s /forum/showthread.php
означает, что будет сбрасываться параметр s у всех url-ов, начинающихся с /forum/showthread.php. Второе поле указывать необязательно, в этом случае параметр(ы) не будет учитываться для всех адресов страниц сайта. Регистр учитывается. Действует ограничение на длину правила - 500 символов. Например:
Дополнительная информация.
Директивы robots.txt, которые не упомянуты в данном описании, робот Яндекса не поддерживает.
Необходимо помнить, что результат использования расширений формата robots.txt может отличаться от результата без них, а именно:
User-agent: Yandex
Allow: /
Disallow: /
# без расширений все запрещалось так как 'Allow: /' игнорировалось,
# с поддержкой расширений все разрешается
User-agent: Yandex
Disallow: /private*html
# без расширений запрещалось '/private*html',
# а с поддержкой расширений и '/private*html',
# и '/private/test.html', и '/private/html/test.aspx' и т.п.
User-agent: Yandex
Disallow: /private$
# без расширений запрещалось '/private$' и '/private$test' и т.п.,
# а с поддержкой расширений только '/private'
User-agent: *
Disallow: /
User-agent: Yandex
Allow: /
# без расширений из-за отсутствия перевода строки,
# 'User-agent: Yandex' было бы проигнорировано и
# результатом стало бы 'Disallow: /', но робот Яндекса
# выделяет записи по наличию в строке 'User-agent:',
# результат для робота Яндекса в данном случае 'Allow: /'
Примеры использования расширенного формата robots.txt:
User-agent: Yandex
Allow: /archive
Disallow: /
# разрешает все, что содержит '/archive', остальное запрещено
User-agent: Yandex
Allow: /obsolete/private/*.html$ # разрешает html файлы по пути '/obsolete/private/...'
Disallow: /*.php$ # запрещает все '*.php' на данном сайте
Disallow: /*/private/ # запрещает все подпути содержащие '/private/', но Allow выше отменяет часть запрета
Disallow: /*/old/*.zip$ # запрещает все '*.zip' файлы, содержащие в пути '/old/'
User-agent: Yandex
Disallow: /add.php?*user=
# запрещает все скрипты 'add.php?' с параметром 'user'
При написании robots.txt необходимо помнить, что у робота есть разумное ограничение на его размер. Слишком большие robots.txt (более 256 Кб) считаются полностью разрешающими, то есть рассматриваются аналогично:
User-agent: Yandex
Disallow:
Также разрешающими считаются robots.txt, которые не удалось закачать (например, по причине неправильных http-заголовков) или отдающие 404 ошибку.