Интересные статьи: PPC, SEO, Полезные советы, Разработка

Что такое robots.txt и для чего он нужен

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

Поскольку это индексный файл (у краулеров прописано его расположение), то находиться он должен в чётко указанном месте – в корневой папке сайта. Открываться должен по такому адресу — http(s):site.com/robots.txt, где http или https используется в зависимости от того на каком протоколе работает Ваш сайт, а вместо site.com ноебходимо вставлять свой домен. Также обязательным условием должна быть кодировка UTF-8, иначе он просто будет прочитан с ошибками или вовсе проигнорирован.

Совет: Чтобы посмотреть свой robots.txt необходимо открыть главную страницу сайта и набрать в адресной строке после нее /robots.txt

Примечание: Поисковая система Google также регламентирует и размер файла robots – он не должен быть более 500 Кб.

С помощью данного файла можно выполнить следующие действия с вашим сайтом:

  1. Полностью закрыть его в глазах поисковика
  2. Открыть все папки и файлы для индексирования
  3. Ограничить страницы для обхода роботом определёнными правилами.

Ответы сервера при сканировании файла robots.txt

  • 2xx – файл найден и информация получена
  • 3хх – поисковый робот переадресован на другой адрес. Так может происходить не более 5 раз или пока он не получит другой ответ сервера. В ином случае это считается ответом 4ххх.
  • 4хх – при таком ответе сервера робот считает, что все содержимое сайта можно сканировать
  • 5хх – данный код говорит о проблемах со стороны сервера, поэтому сканирование запрещается, и робот будет постоянно обращаться на сайт пока не получить отличный от 5хх ответ сервера.

Для чего используется файл robots.txt

Основной его функцией является настройка индексируемости сайта поисковыми краулерами. На сайте есть страницы, которые не должны попадать в выдачу, например:

  • личные данные;
  • страницы фильтрации;
  • страницы динамического поиска;
  • зеркала сайта

В случае, если необходимые страницы не будут закрыты от индексации, могут пострадать ваши клиенты (раскроются персональные данные) и Вы (в индекс попадет куча дублей и мусорных страниц, что понизит сайт при ранжировании)

Примечание: Страница закрытая в robots.txt может также попасть в выдачу, поскольку он является рекомендательным, а не обязательным к исполнению (в особенности это касается Google)

Примечание: В некоторых случаях, страницы нужно закрывать с помощью других способов — тегами meta robots или x-robots. (об этом в других статьях).

robots

Оформление файла robots.txt (синтаксис) и директивы

Примечание: Команды применяемые в этом файле называются директивами

Все команды в файле оформляются одинаковым образом – сначала следует название директивы и двоеточие (между ними не нужен пробел), далее следует пробел и после него пишется сам параметр. Выглядит это так:

Директива: параметр

Для роботс ти экс ти, обязательными является всего 2 команды – это User Agent и Disallow, если хоть одна из них отсутствует, то будет выбиваться ошибка при верификации.

Директива User-agent

Данная команда показывает для какого именно робота пишется данный блок команд. Найдя свое имя, робот будет считывать все команды до следующей директивы user-agent.

User-agent: Yandex

Disallow: /papka/

Disallow: /papka1/

Disallow: /papka2/

Allow: /photo/

User-agent: Googlebot

В самом верху без пробелов впереди и перед двоеточием пишется:

User-agent:

И дальше пишется имя того робота, для которого предназначен данный блок директив. Например, у нас основной робот Яндекса, тогда должно выглядеть так.

User-agent: Yandex  (Читается только ботами Яндекса)

Если вам нужно прописать команды для всех роботов сразу, тогда используем символ — *

User-agent: *    (Читается всеми роботами)

На данный момент есть огромное множество различных ботов. Ниже предоставлен список самых популярных из них на просторах СНГ.

  • Googlebot-News — осуществляет поиск новостей;
  • Mediapartners-Google — бот сервиса AdSense;
  • AdsBot-Google — проверяет качество целевой страницы;
  • Googlebot-Image — для картинок;
  • Googlebot-Video — для видео;
  • Googlebot-Mobile — для мобильной версии;
  • YandexMetrika — робот Яндекс.Метрики;
  • YandexMedia —индексирует мультимедийные данные;
  • YaDirectFetcher — робот Яндекс.Директа;
  • YandexImages — загрузчик Яндекс.Картинок;
  • YandexDirectDyn — для генерации динамических баннеров;
  • YandexBlogs — робот для индексации постов и комментариев на блогах;
  • YandexMarket— робот Яндекс.Маркета;
  • YandexNews — робот Яндекс.Новостей;
  • YandexDirect —робот для скачаваия контента страниц партнеров сети для уточнения тематик;
  • YandexPagechecker — валидатор микроразметки Яндекса;
  • YandexCalendar — робот Яндекс.Календаря.

Директива Disallow:

Данная директива запрещает индексировать файлы и страницы, подпадающие под действие указанного параметра. Синтаксис написания такой же, как и у user-agent.

Например, на сайте есть папка с именем users c файлами с пользовательскими данными, и её нужно закрыть от индексации, тогда пишем так:

Disallow: /users/

Таким образом мы закрыли от индексации и папку /users/ и все содержимое в ней.

Примечание: Для указания параметров не нужно прописывать сам домен. Например пишем не Disallow: site.ru/users/, а Disallow: /users/

Директива Allow:

С помощью данной директивы мы можем открывать необходимые для индексации страницы и файлы.

Например в папке users (о ней мы писали выше) есть папка images, в которой есть картинки необходимые для индексации. Поэтому нам необходимо прописать следующую строку:

Allow: /users/images/

 

В итоге мы получаем:

User-agent: *                           Команды указаны для всех краулеров

Disallow: /users/                     Закрывает папку users и все файлы

Allow: /users/images/           Открывает вложенную папку images и все вложенные файлы

Приоретизация указаний

Если есть конфликт между Disallow и Allow, к исполнению будет выбран тот, у которого длинна параметра после двоеточия больше.

Например:

Disallow: /users/

Allow: /users/images/

По сути первая команда Disallow должна закрыть и папку images тоже, но по поскольку после двоеточия у первой директивы 7 символов, а у второй 14 символов, то приоритетной будет директива Allow.

В случае если директивы полностью одинаковые, то приоритет будет отдан той, которая находиться ниже. Например, при использовании такой последовательности папка users будет открыта:

Disallow: /users/

Allow: /users/

Host или какое зеркало главное

С помощью команды Host мы показываем поисковой системе, какая из версий сайта является основной. Данная команда читается только краулерами Яндекса. Синтаксис написания у неё такой же как и у остальных.

Например:

Host: site.ru

Если ваш сайт работает по незащищенному протоколу http, тогда указывать его явно не нужно. То есть, вы просто пишет домен сайта

Host: site.ru

Если же основное зеркало сайта работает по защищенному протоколу https, тогда его нужно указывать явно.

Host: https://site.ru

Если в файле не указана директива Host, то поисковик сам выберет основное зеркало.

Директива Sitemap или какие страницы важны к индексации

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

Sitemap: http://site.ru/sitemap.xml

В данной директиве путь к файлу карты сайта должен указываться полностью вместе с протоколом и при этом не важно — это http или https.

sitemap

Если в файле нет директивы Sitemap, краулинговый робот по умолчанию ищет в корневой папке сайта (корне) файл с названием sitemap.xml, если его нет, то страницы на сайте проходятся рандомно, учитывая директивы в роботсе.

Кирилические домены в Host и Sitemap

Для сайтов с кириллическим доменом в директивах Sitemap и Host необходимо писать не кирилическими символами домен сайта или папки, а в так называемом PUNNY-code. Для того чтобы его получить нужно просто скопировать урл сайта с адресной строки браузера

Например у нас есть сайт https://сайт.рф

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

Host: https://xn--80aswg.xn--p1ai/

Sitemap: https://xn--80aswg.xn--p1ai/sitemap.xml

Примечание: В таком же виде нужно добавлять url страниц в файл sitemap.xml

Crawl-delay – «ручник» для робота

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

Синтаксис написания выглядит так:

Crawl-delay: 3

где 3, это время в секундах между обращениями бота к сайту.

Сами поисковые системы рекомендуют использовать данную директиву только в крайних случаях.

Директива Clean-param или не дай дублям жизни

С помощью данной директивы можно указать страницы с get параметрам (находятся в url после знака вопроса) на которых возможно дублирование контента. Указав общий текст в урле и общий в динамической части адреса.

Например у нас есть 5 урлов для одной страницы с разными сортировками, хотя товары и текст полностью одинаковые.

site.ru/catalog/phone?sort=price_min

site.ru/catalog/phone?sort=price_max

site.ru/catalog/phone?sort=name_a

site.ru/catalog/phone?sort=name_z

site.ru/catalog/phone?sort=nalichie

Для скрытия дублей необходимо прописать следующую строку

Clean-param: sort /catalog/phone

где sort, это то? что общее для get параметра, а /catalog/phone общее в статической части урла.

 

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

Специальные символы *,$,#

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

Всех под одну гребенку

Первый и самый важный символ, на наш взгляд это * (снежинка). Она означает, что вместо нее можно подставить любое количество любых символов.

В общем понимании это выглядит так:

1*1=121, 1*1=1234567891 и т.д.

Как это применить в нашем случае?

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

site.ru/catalog/123

site.ru/catalog/111

site.ru/catalog/12

site.ru/catalog/23

site.ru/catalog/231

site.ru/catalog/2789

И нам нужно закрыть от индексации site.ru/catalog/123, site.ru/catalog/111, site.ru/catalog/12, но при этом не закрыть site.ru/catalog/23, site.ru/catalog/231, site.ru/catalog/2789.

Можно конечно сделать так:

User-agent: *

Disallow: /catalog/123

Disallow: /catalog/111

Disallow: /catalog/12

Но в 2 раза короче будет так:

User-agent: *

Disallow: /catalog/1*

Также это можно использовать для открытия всех файлов одинакового формата в одной папке.

Например в папке catalog лежат файлы с расширением php, rar, pdf и jpg и нам нужно открыть последние, а все закрыть. Сделать это можно так.

Пример:

User-agent: *

Disallow: /catalog/

Allow: /catalog/*.jpg

Очень важное примечание: в конце любого параметра в директиве робот по умолчанию ставит звездочку. Например, кусок из примера выше краулер видит как:

User-agent: *

Disallow: /catalog/*

Allow: /catalog/*.jpg*

Не забывайте об этом

Стоп строка или знак «бакса» — $

Символ $ означает окончание строки – от отменяет звездочку в конце параметра.Как это понимает робот. У нас есть в папке catalog 2 типа файлов с расширением jpg и jp и нам нужно открыть к индексации вторые, но запретить первые. Сделать это можно так:

User-agent: *

Disallow: /catalog/

Allow: /catalog/*.jp$

Если бы $ там не было, тогда индексировались бы все файлы, не только с jp

Немного поэзии с #

Обычно знак «решетка» в файле robots.txt используется для добавления комментариев. Робот не читает символы, стоящие от этого символа справа и сразу переходит на следующую строку.

User-agent: *

#Открыл данный блок директив для всех роботов

Disallow: /catalog/

#Закрыл от индексации папку catalog

Allow: /catalog/*.jp$

#Открыл для индексации файлы с расширением jp

Поэтому комментарии НЕЛЬЗЯ размещать слева от директив в одной строке.

#Открыл для индексации файлы с расширением jp Allow: /catalog/*.jp$

Допускается комменты размещать справа от директивы и параметра

Allow: /catalog/*.jp$       #Открыл для индексации файлы с расширением jp

 

Идеальный файл robots.txt

 

User-agent: *             #Есть обязательная директива

Disallow:                    # Есть обязательная директива

Host: http://site.ru                     #Указано основное зеркало сайта

Sitemap: http://site.ru/sitemap.xml               #Есть ссылка на файл с url всех страниц сайта

Вывод

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

В следующей статье читайте о том, как правильно настроить robots.txt на примере сайта – это будет в своем роде мастер класс от нас.