База знаний
Файл robots.txt
  1. Что такое файл robots.txt
  2. Как создать robots.txt
  3. Директива User-agent
  4. Использование директив Disallow и Allow
  5. Использование спецсимволов "*" и "$"
  6. Директива Sitemap
  7. Директива Host
  8. Директива Crawl-delay
  9. Директива Clean-param
  10. Дополнительная информация
  11. Исключения
  12. Рекомендуемый файл robots.txt
  1. Что такое файл robots.txt

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

  2. Как создать robots.txt

    Чтобы проверить правильность обработки вашего файла robots.txt, воспользуйтесь анализатором файла robots.txt.

  3. Директива 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: *' отсутствуют, считается, что доступ роботу не ограничен.

    Следующим роботам Яндекса можно указать отдельные директивы:

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

    Пример:

    User-agent: YandexBot # будет использоваться только основным индексирующим роботом
    Disallow: /*id=
    User-agent: Yandex # будет использована всеми роботами Яндекса
    Disallow: /*sid= # кроме основного индексирующего
    User-agent: * # не будет использована роботами Яндекса
    Disallow: /cgi-bin
  4. Использование директив 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'

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

    Директивы 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: # то же, что и Disallow: /
  5. Использование спецсимволов "*" и "$"

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

    Если вы используете описание структуры вашего сайта в формате sitemaps.xml, и хотите, чтобы робот узнал о ней, укажите путь к sitemaps.xml в качестве параметра директивы 'Sitemap' (если файлов несколько, укажите все). Пример:

    User-agent: Yandex
    Allow: /
    Sitemap: http://mysite.ru/site_structure/my_sitemaps1.xml
    Sitemap: http://mysite.ru/site_structure/my_sitemaps2.xml

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

  7. Директива 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

    Тем не менее директива 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-.ru
    Host: www.-myhost.ru
    Host: www.myhost.ru:100000
    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: 213.180.194.129
    Host: www.firsthost.ru,www.secondhost.ru
    Host: www.firsthost.ru www.secondhost.ru

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

    # domen.myhost.ru является главным зеркалом
    # www.domen.myhost.ru, тогда корректное использование
    # директивы Host такое:
    User-Agent: *
    Disallow:
    Host: domen.myhost.ru
  8. Директива 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 секунды
  9. Директива Clean-param

    Если адреса страниц вашего сайта содержат динамические параметры, которые не влияют на их содержимое (например: идентификаторы сессий, пользователей, рефереров и т.п.), вы можете описать их при помощи директивы 'Clean-param'. Робот Яндекса, используя эту информацию, не будет многократно перезакачивать дублирующуюся информацию. Таким образом, увеличится эффективность обхода вашего сайта, снизится нагрузка на сервер.

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

    www.site.ru/some_dir/get_book.pl?ref=site_1&book_id=123
    www.site.ru/some_dir/get_book.pl?ref=site_2&book_id=123
    www.site.ru/some_dir/get_book.pl?ref=site_3&book_id=123

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

    Clean-param: ref /some_dir/get_book.pl

    Вот так:

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

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

    www.site.ru/some_dir/get_book.pl?ref=site_1&book_id=123, 

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

    www.site.ru/some_dir/get_book.pl?book_id=123

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

    www.site.ru/some_dir/get_book.pl?ref=site_2&book_id=123
    www.site.ru/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.site1.ru/forum/showthread.php?s=681498b9648949605&t=8243 www.site1.ru/forum/showthread.php?s=1e71c4427317a117a&t=8243 #robots.txt будет содержать:
    User-agent: Yandex
    Disallow:
    Clean-param: s /forum/showthread.php
    #для адресов вида: www.site2.ru/index.php?page=1&sort=3a&sid=2564126ebdec301c607e5df www.site2.ru/index.php?page=1&sort=3a&sid=974017dcd170d6c4a5d76ae
    #robots.txt будет содержать:
    User-agent: Yandex
    Disallow:
    Clean-param: sid /index.php
    #если таких параметров несколько: www.site1.ru/forum_old/showthread.php?s=681498605&t=8243&ref=1311 www.site1.ru/forum_new/showthread.php?s=1e71c417a&t=8243&ref=9896
    #robots.txt будет содержать:
    User-agent: Yandex
    Disallow:
    Clean-param: s&ref /forum*/showthread.php
    #если параметр используется в нескольких скриптах: www.site1.ru/forum/showthread.php?s=681498b9648949605&t=8243 www.site1.ru/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
  10. Дополнительная информация

    Директивы robots.txt, которые не упомянуты в данном описании, робот Яндекса не поддерживает. Изложенные выше правила обработки файла robots.txt в совокупности являются расширением обычного стандарта, и другие роботы могут иначе интерпретировать файлы robots.txt, в которых, например, используется директива Allow, спецсимвол '$' и спецсимвол '*' внутри URL.

    Примеры обработки различных файлов robots.txt роботом Яндекса и роботом, поддерживающим только основной стандарт:

     User-agent: Yandex 
    Allow: /
    Disallow: /
    # робот Яндекса интерпретирует этот файл, как разрешающий индексирование всех страниц сайта
    # робот, не поддерживающий описанные расширения стандарта, обработает файл,
    # как полностью запрещающий, поскольку 'Allow: /' будет им игнорироваться

    User-agent: Yandex
    Disallow: /private*html
    # для робота Яндекса это правило запретит индексацию страницы '/private*html',
    # '/private/test.html', '/private/html/test.aspx' и т.п.
    # для робота, действующего по строгому стандарту, правило запретит только '/private*html'

    User-agent: Yandex
    Disallow: /private$
    # для робота Яндекса правило запрещает индексацию только страницы '/private'
    # для робота, действующего без расширений, правило запрещает обход страницы '/private$',
    # '/private$test' и т.п.

    User-agent: *
    Disallow: /
    User-agent: Yandex
    Allow: /
    # робот Яндекса выделяет записи по наличию в строке 'User-agent:',
    # поэтому результатом обработки в данном случае будет 'Allow: /'
    # без расширений из-за отсутствия перевода строки
    # 'User-agent: Yandex' было бы проигнорировано, и
    # результатом стало бы 'Disallow: /'


    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 необходимо помнить, что у робота есть разумное ограничение на его размер. Слишком большие robots.txt (более 32 Кб) считаются полностью разрешающими, то есть рассматриваются аналогично:

    User-agent: Yandex
    Disallow:

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

    Для проверки правильности файла robots.txt вы можете воспользоваться специальным on-line анализатором. См. описание «Анализатор robots.txt»

  11. Исключения

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

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

    Список роботов Яндекса, не следующих общим запрещающим правилам в robots.txt:

    • YandexDirect скачивает целевые страницы рекламных объявлений для проверки их доступности и уточнения тематики, что необходимо для их размещения в поисковой выдаче и на сайтах-партнерах;
    • YandexCalendar регулярно скачивает файлы календарей по инициативе живых пользователей, которые часто располагаются в запрещенных для индексации каталогах.

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

    User-agent: YandexDirect
    Disallow: /
    User-agent: YandexCalendar
    Disallow: /*.ics$

Источник: http://help.yandex.ru/webmaster/?id=996567

Рекомендуемый файл robots.txt

User-agent: * # для всех ботовDisallow: /cabinet/ # запрет на индексацию личного кабинетаDisallow: /basket/ # , корзины Disallow: /adm/ # и панели администрированияDisallow: /favorites/ # раздел избранноеDisallow: /compare/ # раздел сравненияClean-param: orderby&filter&oid&parent_oid / #не учитывать в URL параметры для фильтров и сортировокCrawl-delay: 1 #пауза между обращениями 1 секунда

При редактировании любого товара вы можете отключить его индексацию ( директива Disallow), отключив соответствующую галочку в правах доступа (по-умолчанию она отключена).

После этого в файле robots.txt появится новые строки, которые сообщат поисковой системе, что индексация страницы запрещена.

Например:

#НЕ УДАЛЯТЬ. Автоматические записиUser-agent: *Disallow: /shop/food/veg/Овощи/tomato.html