1 (edited by 2015.08.14 14:28)

Topic: Настройка файла robots txt

С помощью файла robots.txt запрет на индексацию определенных страниц сайта можно устанавливать как для всех роботов сразу, так и для каждого в отдельности или выборочно.

Всем роботам разрешено индексировать все:

User-Agent: *
Disallow:

Всем роботам запрещено индексировать сайт:

User-Agent: *
Disallow: /

Запрещаем роботу Yandex индексировать каталог админки:

User-Agent: Yandex
Disallow: /admin/

Запрещаем роботу Google индексировать страницу контактов:

User-Agent: Googlebot
Disallow: /contacts.htm

Запрещаем всем индексировать каталог админки и страницы вначале адреса которых есть слово "admin":

User-Agent: *
Disallow: /admin

Как правильно составить robots.txt
В правильном robots.txt директивы для поисковых роботов должны быть расположены в четкой последовательности: от общих директив, касающихся всех, до частных - для отдельных поисковиков.

User-Agent: *
Crawl-delay: 3
Disallow: /admin/
Disallow: /cache/
Disallow: /search.php

User-Agent: Googlebot
Disallow: /admin/
Disallow: /cache/
Disallow: /extern.php?*
Disallow: /misc.php?*
Disallow: /search.php

User-Agent: Yandex
Disallow: /admin/
Disallow: /cache/
Disallow: /extern.php?*
Disallow: /misc.php?*
Disallow: /search.php
Host: punbb.info

Sitemap: https://punbb.softplaza.net/sitemap.xml

2

Re: Настройка файла robots txt

В основном в текстовом файле для роботов прописывают параметры которые принимают большинство из них. Вот какие правила существуют для Яндекса.

Роботам Яндекса можно указать отдельные директивы:
'YandexBot' — основной индексирующий робот;
'YandexDirect' — скачивает информацию о контенте сайтов-партнеров Рекламной сети, чтобы уточнить их тематику для подбора релевантной рекламы, интерпретирует robots.txt особым образом;
'YandexDirectDyn' — робот генерации динамических баннеров, интерпретирует robots.txt особым образом;
'YandexMedia' — робот, индексирующий мультимедийные данные;
'YandexImages' — индексатор Яндекс.Картинок;
'YandexCatalog' — «простукивалка»Яндекс.Каталога, используется для временного снятия с публикации недоступных сайтов в Каталоге;
'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 

3

Re: Настройка файла robots txt

Чтобы запретить доступ робота к сайту или некоторым его разделам, используйте директиву 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.

4

Re: Настройка файла robots txt

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

5

Re: Настройка файла robots txt

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

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

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

6

Re: Настройка файла robots txt

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

7

Re: Настройка файла robots txt

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

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

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

8

Re: Настройка файла robots txt

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

9

Re: Настройка файла robots txt

Если сервер сильно нагружен и не успевает отрабатывать запросы на загрузку, воспользуйтесь директивой 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 секунды

10

Re: Настройка файла robots txt

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

www.site.com/some_dir/get_book.pl?ref=site_1&book_id=123
www.site.com/some_dir/get_book.pl?ref=site_2&book_id=123
www.site.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.site.com/some_dir/get_book.pl?ref=site_1&book_id=123,

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

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

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

www.site.com/some_dir/get_book.pl?ref=site_2&book_id=123
www.site.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

11

Re: Настройка файла robots txt

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

#robots.txt будет содержать:
User-agent: Yandex
Disallow:
Clean-param: s /forum/showthread.php
#для адресов  вида:
www.site2.com/index.php?page=1&sort=3a&sid=2564126ebdec301c607e5df
www.site2.com/index.php?page=1&sort=3a&sid=974017dcd170d6c4a5d76ae

#robots.txt будет содержать:
User-agent: Yandex
Disallow:
Clean-param: sid /index.php
#если таких параметров несколько:
www.site1.com/forum_old/showthread.php?s=681498605&t=8243&ref=1311
www.site1.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.site1.com/forum/showthread.php?s=681498b9648949605&t=8243
www.site1.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