↑ Вернуться > Файл robots.txt

Файл robots.txt для yandex

Robots.txt — текстовый файл, который содержит параметры индексирования сайта для роботов поисковых систем.
Как создать robots.txt для Yandex (информация взята с сайта www.yandex.ru)
 

1. В текстовом редакторе создайте файл с именем robots.txt и заполните его в соответствии с представленными ниже правилами.
2. Проверьте файл в сервисе Яндекс. Вебмастер (пункт меню Анализ robots.txt).
3. Загрузите файл в корневую директорию вашего сайта.
Директива User-agent
Робот Яндекса поддерживает стандарт исключений для роботов с расширенными возможностями, которые описаны ниже.

В роботе Яндекса используется сессионный принцип работы, на каждую сессию формируется определенный пул страниц, которые планирует загрузить робот.

Сессия начинается с загрузки файла robots.txt. Если файл отсутствует, не является текстовым или на запрос робота возвращается HTTP-статус отличный от 200 OK, робот считает, что доступ к документам не ограничен.

В файле robots.txt робот проверяет наличие записей, начинающихся с User-agent:, в них учитываются подстроки Yandex (регистр значения не имеет) или * . Если обнаружена строка User-agent: Yandex, директивы для User-agent: * не учитываются. Если строки User-agent: Yandex и User-agent: * отсутствуют, считается, что доступ роботу не ограничен.

Следующим роботам Яндекса можно указать отдельные директивы:
•’YandexBot’ — основной индексирующий робот;
•’YandexDirect’ — скачивает информацию о контенте сайтов-партнеров Рекламной сети, чтобы уточнить их тематику для подбора релевантной рекламы, интерпретирует robots.txt особым образом;
•’YandexDirectDyn’ — робот генерации динамических баннеров, интерпретирует robots.txt особым образом;
•’YandexMedia’ — робот, индексирующий мультимедийные данные;
•’YandexImages’ — индексатор Яндекс.Картинок;
•’YaDirectFetcher’ — робот Яндекс.Директа, интерпретирует robots.txt особым образом;
•’YandexBlogs’поиска по блогам — робот , индексирующий посты и комментарии;
•’YandexNews’ — робот Яндекс.Новостей;
•’YandexPagechecker’ — валидатор микроразметки;
•‘YandexMetrika’ — робот Яндекс.Метрики;
•‘YandexMarket’— робот Яндекс.Маркета;
•‘YandexCalendar’ — робот Яндекс.Календаря.

Если обнаружены директивы для конкретного робота, директивы User-agent: Yandex и User-agent: * не используются.

Пример:

User-agent: YandexBot # будет использоваться только основным индексирующим роботом
Disallow: /*id=

User-agent: Yandex # будет использована всеми роботами Яндекса
Disallow: /*sid= # кроме основного индексирующего

User-agent: * # не будет использована роботами Яндекса
Disallow: /cgi-bin

Директивы Disallow и Allow

Чтобы запретить доступ робота к сайту или некоторым его разделам, используйте директиву Disallow.

Примеры:

User-agent: Yandex
Disallow: / # блокирует доступ ко всему сайту

User-agent: Yandex
Disallow: /cgi-bin # блокирует доступ к страницам,
# начинающимся с ‘/cgi-bin’

В соответствии со стандартом перед каждой директивой User-agent рекомендуется вставлять пустой перевод строки.

Символ # предназначен для описания комментариев. Все, что находится после этого символа и до первого перевода строки не учитывается.

Чтобы разрешить доступ робота к сайту или некоторым его разделам, используйте директиву Allow

Примеры:

User-agent: Yandex
Allow: /cgi-bin
Disallow: /
# запрещает скачивать все, кроме страниц
# начинающихся с ‘/cgi-bin’

Примечание. Недопустимо наличие пустых переводов строки между директивами User-agent, Disallow и Allow.

Совместное использование директив

Директивы Allow и Disallow из соответствующего User-agent блока сортируются по длине префикса URL (от меньшего к большему) и применяются последовательно. Если для данной страницы сайта подходит несколько директив, то робот выбирает последнюю в порядке появления в сортированном списке. Таким образом, порядок следования директив в файле robots.txt не влияет на использование их роботом.
Примеры:

# Исходный robots.txt:
User-agent: Yandex
Allow: /catalog
Disallow: /
# Сортированный robots.txt:
User-agent: Yandex
Disallow: /
Allow: /catalog
# разрешает скачивать только страницы,
# начинающиеся с ‘/catalog’

# Исходный robots.txt:
User-agent: Yandex
Allow: /
Allow: /catalog/auto
Disallow: /catalog
# Сортированный robots.txt:
User-agent: Yandex
Allow: /
Disallow: /catalog
Allow: /catalog/auto
# запрещает скачивать страницы, начинающиеся с ‘/catalog’,
# но разрешает скачивать страницы, начинающиеся с ‘/catalog/auto’.

Примечание. При конфликте между двумя директивами с префиксами одинаковой длины приоритет отдается директиве Allow.

Директивы Allow и Disallow без параметров

Если директивы не содержат параметры, учитывает данные следующим образом:

User-agent: Yandex
Disallow: # то же, что и Allow: /

User-agent: Yandex
Allow: # не учитывается роботом

Использование спецсимволов * и $

При указании путей директив 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

Если вы используете описание структуры сайта с помощью файла Sitemap, укажите путь к файлу в качестве параметра директивы Sitemap (если файлов несколько, укажите все).

Пример:

User-agent: Yandex
Allow: /
Sitemap: http://example.com/site_structure/my_sitemaps1.xml
Sitemap: http://example.com/site_structure/my_sitemaps2.xml

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

Директива Host

Если у вашего сайта есть зеркала, специальный робот зеркальщик ( Mozilla/5.0 (compatible; YandexBot/3.0; MirrorDetector; +http://yandex.com/bots) ) определит их и сформирует группу зеркал вашего сайта. В поиске будет участвовать только главное зеркало. Вы можете указать его для всех зеркал в файле 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

Тем не менее директива Host является межсекционной, поэтому будет использоваться роботом вне зависимости от места в файле robots.txt, где она указана.

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

Пример:

Host: myhost.ru # используется

User-agent: *
Disallow: /cgi-bin

User-agent: Yandex
Disallow: /cgi-bin
Host: www.myhost.ru # не используется

Директива Host должна содержать:
• Указание на протокол HTTPS, если зеркало доступно только по защищенному каналу (Host: https://myhost.ru).

• Одно корректное доменное имя, соответствующего RFC 952 и не являющегося IP-адресом.

• Номер порта, если необходимо (Host: myhost.ru:8080).

Некорректно составленные директивы Host игнорируются.

# Примеры игнорируемых директив Host

Host: www.myhost-.com
Host: www.-myhost.com
Host: www.myhost.com:100000
Host: www.my_host.com
Host: .my-host.com:8000
Host: my-host.com.
Host: my..host.com
Host: www.myhost.com:8080/
Host: 213.180.194.129
Host: www.firsthost.ru,www.secondhost.com
Host: www.firsthost.ru www.secondhost.com

Примеры использования директивы Host:

# domen.myhost.ru является главным зеркалом
# www.domen.myhost.com, тогда корректное использование
# директивы Host такое:

User-Agent: *
Disallow:
Host: domen.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 секунды

User-agent: *
Disallow: /search
Crawl-delay: 4.5 # задает таймаут в 4.5 секунды

Директива Clean-param

Если адреса страниц сайта содержат динамические параметры, которые не влияют на их содержимое (например: идентификаторы сессий, пользователей, рефереров и т. п.), вы можете описать их с помощью директивы Clean-param.

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

Например, на сайте есть страницы:

www.example.com/some_dir/get_book.pl?ref=site_1&book_id=123
www.example.com/some_dir/get_book.pl?ref=site_2&book_id=123
www.example.com/some_dir/get_book.pl?ref=site_3&book_id=123

Параметр ref используется только для того, чтобы отследить с какого ресурса был сделан запрос и не меняет содержимое, по всем трем адресам будет показана одна и та же страница с книгой book_id=123. Тогда, если указать директиву следующим образом:

User-agent: Yandex
Disallow:
Clean-param: ref /some_dir/get_book.pl

робот Яндекса сведет все адреса страницы к одному:

www.example.com/some_dir/get_book.pl?ref=site_1&book_id=123,

Если на сайте доступна страница без параметров:

www.example.com/some_dir/get_book.pl?book_id=123

то все сведется именно к ней, когда она будет проиндексирована роботом. Другие страницы вашего сайта будут обходиться чаще, так как нет необходимости обновлять страницы:

www.example.com/some_dir/get_book.pl?ref=site_2&book_id=123
www.example.com/some_dir/get_book.pl?ref=site_3&book_id=123

Синтаксис директивы

Clean-param: p0[&p1&p2&..&pn] [path]

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

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

Префикс может содержать регулярное выражение в формате, аналогичном файлу robots.txt, но с некоторыми ограничениями: можно использовать только символы A-Za-z0-9.-/*_. При этом * трактуется так же, как в robots.txt. В конец префикса всегда неявно дописывается символ *. Например:

Clean-param: s /forum/showthread.php

означает, что параметр s будет считаться незначащим для всех URL, начинающихся с /forum/showthread.php. Второе поле указывать необязательно, в этом случае правило будет применяться для всех страниц сайта. Регистр учитывается. Действует ограничение на длину правила — 500 символов. Например:

Clean-param: abc /forum/showthread.php
Clean-param: sid&sort /forumt/*.php
Clean-param: someTrash&otherTrash

Дополнительные примеры

#для адресов вида:
www.example1.com/forum/showthread.php?s=681498b9648949605&t=8243
www.example1.com/forum/showthread.php?s=1e71c4427317a117a&t=8243

#robots.txt будет содержать:
User-agent: Yandex
Disallow:
Clean-param: s /forum/showthread.php

#для адресов вида:
www.example2.com/index.php?page=1&sort=3a&sid=2564126ebdec301c607e5df
www.example2.com/index.php?page=1&sort=3a&sid=974017dcd170d6c4a5d76ae

#robots.txt будет содержать:
User-agent: Yandex
Disallow:
Clean-param: sid /index.php

#если таких параметров несколько:
www.example1.com/forum_old/showthread.php?s=681498605&t=8243&ref=1311
www.example1.com/forum_new/showthread.php?s=1e71c417a&t=8243&ref=9896

#robots.txt будет содержать:
User-agent: Yandex
Disallow:
Clean-param: s&ref /forum*/showthread.php

#если параметр используется в нескольких скриптах:
www.example1.com/forum/showthread.php?s=681498b9648949605&t=8243
www.example1.com/forum/index.php?s=1e71c4427317a117a&t=8243

#robots.txt будет содержать:
User-agent: Yandex
Disallow:
Clean-param: s /forum/index.php
Clean-param: s /forum/showthread.php

Дополнительная информация

Робот Яндекса не поддерживает директивы файла robots.txt, которые не указаны на этой странице. Изложенные выше правила обработки файла в совокупности являются расширением обычного стандарта, и другие роботы могут иначе интерпретировать содержимое 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: /’

User-agent: *
Disallow: /
# комментарий1…
# комментарий2…
# комментарий3…
User-agent: Yandex
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 необходимо помнить, что у робота есть разумное ограничение на его размер. Если размер файла превышает 32 Кб, робот считает его полностью разрешающим, то есть рассматриваются аналогично:

User-agent: Yandex
Disallow:

Также разрешающим считается robots.txt, который не удалось загрузить (например, не правильно настроены HTTP-заголовки или возвращается HTTP-статус 404 Not found).

Исключения

Некоторые роботы Яндекса скачивают документы не для их последующей индексации, а для других специфичных целей. Для избежания непреднамеренной блокировки владельцами сайтов они могут не следовать ограничивающим директивам файла robots.txt, предназначенным для произвольных роботов (User-agent: *).

Также частичное игнорирование ограничений robots.txt определенных сайтов возможно при наличии соответствующей договоренности между компанией «Яндекс» и владельцами этих сайтов.

Внимание! Если такой робот скачивает документ, не доступный основному роботу Яндекса, этот документ никогда не будет проиндексирован и не попадет в поисковую выдачу.

Список роботов Яндекса, не следующих общим запрещающим правилам в robots.txt:
•YaDirectFetcher скачивает целевые страницы рекламных объявлений для проверки их доступности и уточнения тематики, что необходимо для их размещения в поисковой выдаче и на сайтах-партнерах.
•YandexCalendar регулярно скачивает файлы календарей по инициативе пользователей, которые часто располагаются в запрещенных для индексации каталогах.
•YandexDirect скачивает информацию о контенте сайтов-партнеров Рекламной сети, чтобы уточнить их тематику для подбора релевантной рекламы.
•YandexDirectDyn — робот генерации динамических баннеров.
•YandexMobileBot скачивает документы для последующего их анализа на наличие верстки, подходящей под мобильные устройства.
•YandexAccessibilityBot скачивает страницы для проверки их доступности пользователям.
•YandexScreenshotBot делает снимок страницы.
•YandexMetrika — робот Яндекс.Метрики.
•YandexVideoParser — индексатор Яндекс.Видео.

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

User-agent: YaDirectFetcher
Disallow: /

User-agent: YandexMobileBot
Disallow: /private/*.txt$