ПоискПочтаКартыМаркетНовостиСловариБлогиВидеоКартинки
    Войти

    Использование 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. Дополнительная информация.
    1. Что такое файл robots.txt

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

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

      Воспользуйтесь любым текстовым редактором (например, Блокнотом или WordPad'ом), создайте файл с именем "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: *' отсутствуют, считается, что доступ роботу не ограничен.

    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'

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

      Если для данной страницы сайта подходит несколько директив, то выбирается первая в порядке появления в выбранном User-agent блоке. Примеры, если:

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

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

      или

      User-agent: Yandex
      Allow: /
      
      User-agent: *
      Disallow: /
      
      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
       
      #Примеры некорректно составленных robots.txt, при обработке 
      #которых директива Host может не учитываться
      #1.
      User-Agent: *
      Host: www.myhost.ru
      
      #2.
      Host: www.myhost.ru
      
      #3.
      User-Agent: *
      Host: www.myhost.ru
      Disallow: 
      
      #4.
      Host: www.myhost.ru
      User-Agent: *
      Disallow:

      Важно: параметр директивы Host обязан состоять из одного корректного имени хоста (т.е. соответствующего RFC 952 и не являющегося IP-адресом) и допустимого номера порта. Некорректно составленные строчки '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
      
      # domen.myhost.ru является главным зеркалом 
      # www.domen.myhost.ru, тогда некорректное использование 
      # директивы Host такое:
      User-Agent: *
      Disallow:
      Host: 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?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]

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

      Примечание:

      Префикс может содержать регулярное выражение в формате, аналогичном 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 может отличаться от результата без них, а именно:

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

      User-agent: Yandex
      Disallow:

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

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

    Насколько вам понравился этот раздел Помощи?Спасибо!
    Спасибо! Ваш отзыв поможет нам улучшить Помощь.
    Обратная связь