Robots.txt
Когда начинаешь писать новую инструкцию, хочется говорить словами классика... Но классик, к сожалению
по этому поводу ничего не сказал...
Поэтому вот слова Яндекса:
Robots.txt — текстовый файл, расположенный на сайте, который предназначен для роботов поисковых систем. В этом файле вебмастер может указать параметры индексирования своего сайта как для всех роботов сразу, так и для каждой поисковой системы по отдельности.
Материал подготовлен на основании рекомендаций:
Перейдя по этим ссылкам, возможно вы подчеркнете дополнительные знания, либо ознакомитесь с примерами правильного формирования правил
Правила для Robots.txt
User-Agent: — робот, к которому применяется следующее правило
Disallow: — запрет индексации
Allow: — разрешение индексции
Sitemap: — путь к карте сайта
Host: — указание основного зеркала (для Яндекс и Mail.RU)
Crawl-delay: — установка минимального времени между закачками страниц
Clean-param: — склейка страниц с динамическими урлами
# комментарий1... — комментарий
User-Agent
Все:
User-agent: * |
все роботы |
Yandex:
User-Agent: YandexBot |
основной индексирующий робот |
User-Agent: YandexMedia |
робот, индексирующий мультимедийные данные |
User-Agent: YandexImages |
индексатор Яндекс.Картинок |
User-Agent: YandexCatalog |
«простукивалка» Яндекс.Каталога, используется для временного снятия с публикации недоступных сайтов в Каталоге |
User-Agent: YaDirectFetcher |
робот Яндекс.Директа, особым образом интерпретирует robots.txt |
User-Agent: YandexBlogs |
робот поиска по блогам, индексирующий посты и комментарии |
User-Agent: YandexNews |
робот Яндекс.Новостей |
User-Agent: YandexPagechecker |
|
User-Agent: YandexMetrika |
робот Яндекс.Метрики |
User-Agent: YandexMarket |
робот Яндекс.Маркета |
User-Agent: YandexCalendar |
робот Яндекс.Календаря |
User-Agent: Yandex |
правила для всех роботов Яндекса |
Google:
User-agent: Googlebot |
основной индексирующий робот (веб-поиск Google) |
User-agent: Googlebot-News |
индексатор Google новостей * при отсутсвии правил для этого робота, руководствуется правилами для Googlebot |
Googlebot-Image |
индексатор Google картинок * при отсутсвии правил для этого робота, руководствуется правилами для Googlebot |
Googlebot-Video |
робот, индексирующий мультимедийные данные * при отсутсвии правил для этого робота, руководствуется правилами для Googlebot |
Googlebot-Mobile |
индексатор для мобильной версии сайта * при отсутсвии правил для этого робота, руководствуется правилами для Googlebot |
Mediapartners-Google |
робот анализирующий содержание страницы для отображения рекламных объявлений AdSense * при отсутсвии правил для этого робота, руководствуется правилами для Googlebot |
AdsBot-Google |
Проверка качества целевой страницы |
Mail.RU
User-agent: Mail.Ru |
основной индексирующий робот |
Bing
User-agent: MSNBot/Bingbot |
основной индексирующий робот |
Синтаксис
Все инструкции для роботов всех поисковых систем начинаются с «/»
Комментарии всегда пишутся через решетку (#) и с новой строки, т.к. если они будут писаться в одной строке с инструкцией, то могут быть не распознаны некоторыми роботами некоторых поисковых систем.
При указании путей директив Allow-Disallow можно использовать спецсимволы ’*’ и ’$’, задавая, таким образом, определенные регулярные выражения.
Спецсимвол ’*’
Означает любую (в том числе пустую) последовательность символов.
Примеры:
Disallow: /cgi-bin/*.aspx # запрещает ’/cgi-bin/example.aspx’
# запрещает не только ’/private’, |
Спецсимвол ’$’
По умолчанию к концу каждого правила, описанного в robots.txt, приписывается ’*’
Чтобы отменить ’*’ на конце правила, можно использовать спецсимвол ’$’
Примеры:
Disallow: /example$ # запрещает ’/example’, Disallow: /example # запрещает и ’/example’, Disallow: /example$ # запрещает только ’/example’ Disallow: /example*$ # так же, как ’Disallow: /example’ |
Чтобы запретить доступ робота к некоторым частям сайта или сайту целиком, используйте директиву ’Disallow’.
Примеры:
Disallow: / # блокирует доступ ко всему сайту # блокирует доступ к страницам |
Примечание:
Недопустимо наличие пустых переводов строки между директивами ’User-agent’ и ’Disallow’ (’Allow’), а также между самими ’Disallow’ (’Allow’) директивами.
Кроме того, в соответствии со стандартом перед каждой директивой ’User-agent’ рекомендуется вставлять пустой перевод строки.
Символ ’#’ предназначен для описания комментариев. Все, что находится после этого символа и до первого перевода строки не учитывается.
Чтобы разрешить доступ робота к некоторым частям сайта или сайту целиком, используйте директиву ’Allow’.
Примеры:
Allow: /cgi-bin |
Перечень страниц по умолчанию закрываемых от робота
В них входят страницы сортировки, контекстной рекламы, оплаты, метрик и аналитик.
utm sort= gclid= UAH RUR WMZ USD |
Индексация картинок
Для предоставления инструкций индексации картинок, для каждого User-Agent’а указываем расположение папки с картинками на фтп и запрет на индексацию всего сайта, кроме этой папки. Пример:
User-Agent: Googlebot-Image
Disallow: /*
Allow: /images/ |
Совместное использование директив.
Директивы Allow и Disallow из соответствующего User-agent блока сортируются по длине префикса URL (от меньшего к большему) и применяются последовательно.
Если для данной страницы сайта подходит несколько директив, то выбирается последняя в порядке появления в сортированном списке. Таким образом порядок следования директив в файле robots.txt не влияет на использование их роботом.
Примеры:
Allow: /catalog |
Важно. В случае возникновения конфликта между двумя директивами с префиксами одинаковой длины приоритет отдается директиве Allow.
Директива SitemapЕсли вы используете описание структуры вашего сайта в формате sitemaps.xml, и хотите, чтобы робот узнал о ней, укажите путь к sitemaps.xml в качестве параметра директивы ’Sitemap’ (если файлов несколько, укажите все).
Директива Sitemap является межсекционной, поэтому будет использоваться роботом вне зависимости от места в файле robots.txt, где она указана.
Пример:
Allow: / |
Если у вашего сайта есть зеркала, специальный робот зеркальщик определит их и сформирует группу зеркал вашего сайта. В поиске будет участвовать только главное зеркало. Вы можете указать его у всех зеркал при помощи robots.txt, используя директиву ’Host’ и определив в качестве ее параметра имя главного зеркала. Директива ’Host’ не гарантирует выбор указанного главного зеркала, тем не менее, алгоритм при принятии решения учитывает ее с высоким приоритетом.
Пример:
#Если www.glavnoye-zerkalo.ru главное зеркало сайта, то |
Важно: в целях совместимости с роботами, которые не полностью следуют стандарту при обработке robots.txt, директиву ’Host’ необходимо добавлять в группе, начинающейся с записи ’User-Agent’, непосредственно после директив ’Disallow’(’Allow’). Аргументом директивы ’Host’ является доменное имя с номером порта (80 по умолчанию), отделенным двоеточием.
Пример:
#Пример корректно составленного robots.txt, при обработке |
Тем не менее директива Host является межсекционной, поэтому будет использоваться роботом вне зависимости от места в файле robots.txt, где она указана.
Важно: для каждого файла robots.txt обрабатывается только одна директива Host. Обнаружив несколько директив, робот использует первую.
Пример:
Host: myhost.ru # используется |
Директива Host должна состоять из следующих частей:
- указание на протокол HTTPS, если зеркало доступно только по защищенному каналу (Host: https://myhost.ru);
- одно корректное доменное имя, соответствующего RFC 952 и не являющегося IP-адресом;
- номер порта, если необходимо (Host: myhost.ru:8080).
Некорректно составленные директивы Host игнорируются.
# Примеры игнорируемых директив Host |
Примеры использования директивы Host:
# domen.myhost.ru является главным зеркалом |
Если сервер сильно нагружен и не успевает отрабатывать запросы на закачку, воспользуйтесь директивой «Crawl-delay». Она позволяет задать поисковому роботу минимальный период времени (в секундах) между концом закачки одной страницы и началом закачки следующей. В целях совместимости с роботами, которые не полностью следуют стандарту при обработке robots.txt, директиву «Crawl-delay» необходимо добавлять в группе, начинающейся с записи «User-Agent», непосредственно после директив «Disallow» («Allow»).
Поисковый робот Яндекса поддерживает дробные значения Crawl-Delay, например, 0.5. Это не гарантирует, что поисковый робот будет заходить на ваш сайт каждые полсекунды, но дает роботу больше свободы и позволяет ускорить обход сайта.
Примеры:
User-agent: Yandex # задает таймаут в 2 секунды # задает таймаут в 4.5 секунды |
Если адреса страниц вашего сайта содержат динамические параметры, которые не влияют на их содержимое (например: идентификаторы сессий, пользователей, рефереров и т.п.), вы можете описать их при помощи директивы ’Clean-param’. Робот Яндекса, используя эту информацию, не будет многократно перезакачивать дублирующуюся информацию. Таким образом, увеличится эффективность обхода вашего сайта, снизится нагрузка на сервер.
Например, на сайте есть страницы:
www.site.ru/some_dir/get_book.pl?ref=site_1&book_id=123 |
параметр ’ref=’ используется только для того, чтобы отследить с какого ресурса был сделан запрос и не меняет содержимое, по всем трем адресам будет показана одна и та же страница с книгой ’book_id=123′. Тогда, если в robots.txt указать:
Clean-param: ref /some_dir/get_book.pl |
Вот так:
User-agent: Yandex |
Робот Яндекса сведет все адреса страницы к одному:
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 |
Синтаксис использования директивы:
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 |
Важные правила составления
Дистанция между блоками директив User-agent равняется 1 строке
Директива Host размещается либо после директив User-agent либо после User-agent Yandex (без отступлений)
Для уверенности в корректном внедрении файла Robots.txt сформируйте файл уже в нужном расширении и передайте его на внедрение