Обновлено 08.08.2017г. 12:31 (UTC+3)

Robots.txt: учимся управлять поисковыми роботами

Всем привет, сегодня научимся создавать файл Robots.txt для управления индексацией сайта.

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

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

Если страницу или директорию нужно действительно надежно закрыть от посторонних глаз, следует устанавливать пароль доступа.

Синтаксис при формировании файла

Robots.txt содержит в себе инструкции. Одной из таких является «User-Agent», определяющая команды для различных роботов. К примеру, Googlebot, YandexBot – являются указаниями для роботов двух различных поисковых систем. User-agent: * - указывает на то, что правила установлены для всех поисковых роботов, выполняющих сканирование сайта.

Disallow: страницы, к которым нужно запретить доступ (можно указывать неограниченное количество с каждой новой строчки). Поисковая система Яндекс в данный момент поддерживает противоположную по значению директиву «Allow»: она позволяет разрешить доступ робота к некоторым разделам сайта или полностью ко всему сайту. Важно понимать, что команда «Allow» будет проигнорирована Google т.к. он не поддерживает такой синтаксис. Каждая из групп User-Agent/Disallow должны быть разделены между собой пустыми строками. Но при этом аналогичное разделение внутри групп не допускается.

#: символ для комментариев в файле (комментарии игнорируются роботом). Комментировать можно строку или директиву. Это бывает удобным при создании сложных конструкций в файле с целью систематизации правил. Имена файлов и каталоги чувствительны к регистру – следует помнить, что page и Page – разные для поискового робота страницы.

Host: команда для поискового робота Яндекса с целью указания основного зеркала ресурса. Не рекомендуется ставить 301 редирект на файл robots.txt Важно: если протокол сайта https, то он указывается обязательно, в случае с http указание протокола для ресурса не нужно!

Crawl-delay: ограничение скорости обхода ресурса. Актуально при большой посещаемости, когда дополнительная нагрузка на сервер при индексации может спровоцировать проблемы. Установка задержек между запросами позволит снизить нагрузку на хостинг и уменьшит частоту запросов от поисковых систем.

Sitemap: указание адреса, по которому расположена xml-карта сайта. Рекомендуется всегда её располагать по адресу site.ru/sitemap.xml и дублировать этот путь в директиве sitemap.

Clean-param: директива Яндекса, которая позволит избежать дублей с GET-параметрами. Эта проблема часто возникает на форумах, когда добавляют параметры сортировки, id сессии и другие параметры, препятствующие нормальному индексированию. Спецсимволы: * (любая последовательность символов), $ (конец строки).

Robots.txt в примерах

Чтобы запретить индексирование сайта при разработке ресурса и доступе к нему через поддомен (или по любой другой причине): User-agent: * Disallow: /  
Чтобы разрешить индексацию всего сайта: User-agent: * Disallow:
Чтобы запретить индексацию папки:   User-agent: Yandexbot Disallow: /no-index/
Чтобы запретить доступ к странице определенному роботу: User-agent: Googlebot Disallow: /no-index/thispage.html
Чтобы запретить индексацию файлов определенного расширения: User-agent: * Disallow: /*.pdf$
Чтобы дать роботу ссылку на карту сайта, если она размещена не в стандартном месте: User-agent: * Disallow: Sitemap: http://www.example.com/nonestandardlocation/sitemap.xml

Что лучше закрывать от индексации?

Robots.txt можно использовать, чтобы не индексировать:

  • панель администратора ресурса;
  • результаты внутреннего поиска по сайту;
  • технические страницы (регистрация/вход/восстановление доступа/корзина и т.п.);
  • страницы /index.php или /index.html (Disallow: /index*)

Также рекомендуется использовать конструкцию вида:

Disallow: /*?*

Она позволяет закрыть страницы, которые могут генерироваться движком сайта или хостингом – к примеру, на большинстве сайтов страница www.site.ru/? дублирует главную страницу сайта). Перед закрытием страниц от индексации, внимательно изучите его структуру. Все страницы сайта могут генерироваться например в следующем виде: www.site.ru/index.php/cat/

Почему робот может не «слушаться» правил, написанных в robots.txt

Бывает, что закрытые от индексации в robots.txt файлы и документы все равно индексируются и попадают в поисковую выдачу. Естественно, этот факт сильно раздражает владельцев сайтов. Объяснение этой ситуации размещено в официальном блоге Яндекса. Приведу его краткий пересказ. Индексирующий робот Яндекса, приходя на сайт, обязательно учитывает правила, указанные в robots.txt. Этот файл в его восприятии – строгая инструкция, нарушать которую запрещено. Чтобы все директивы, которые установил владелец ресурса, были правильно восприняты роботом, нужно учитывать такие условия:

  • Файл robots.txt нужно разместить в корневом каталоге ресурса – чтобы он был доступен по адресу сайт.ру/ robots.txt. Его нельзя располагать на другом ресурсе, в другой директории или на поддомене.
  • При обращении робота к файлу должен возвращаться код HTTP 200. Другой код в ответе или перенаправление означают, что робот не получит доступа к файлу.
  • Размер robots.txt должен быть не больше 32 Кб, иначе робот воспримет его как слишком сложный или содержащий ошибки. Такая инструкция в «глазах» робота автоматически станет полностью разрешающей.
  • Если robots.txt содержит правила для роботов разных поисковых систем, робот Яндекса будет пользоваться только теми, которые предназначены для него. Они размещены после строчки User-agent: Yandex.
  • При столкновении с конфликтующими директивами - например,

User-agent: Yandex Allow: / Disallow: *

Робот решит, что всем страницам сайта разрешено попасть в поиск.

Выполнив перечисленные рекомендации, можно получить уверенность, что робот Яндекса правильно учтет все перечисленные нормы индексирования, не посетит запрещенные страницы и они, естественно, не появятся в выдаче. К слову: если информацию в файле отредактировать, изменения вступят в силу не сразу, а примерно через 7-15 дней.

Как и где проверять Robots.txt?

После окончательного формирования файла важно выполнить проверку валидности. Для этого можно использовать инструменты для вебмастеров, которые предоставляют Яндекс и Google. В частности, в панели для вебмастеров от Google нужно войти в свой аккаунт (сайт уже должен быть предварительно добавлен), после чего перейти на Сканирование/Инструменты проверки файла robots.txt. Проверка robots.txt в Google Что здесь можно сделать:

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

В Яндекс.Вебмастер тоже предусмотрена проверка файла. В частности, здесь можно:

  • проверять robots.txt. без авторизации и добавления сайта;
  • проверять можно списки страниц, а не по одной;
  • убедиться, что все инструкции в файле понятны роботу Яндекса.

Проверка robots.txt в Яндекс Вебмастер После проверки готовый файл загружают в корень сайта.

Поисковые роботы Яндекса

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

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

  • 'YandexBot' — основной индексирующий робот;
  • 'YandexDirect' — скачивает информацию о контенте сайтов-партнеров Рекламной сети, чтобы уточнить их тематику для подбора релевантной рекламы, интерпретирует robots.txt особым образом;
  • 'YandexDirectDyn' — робот генерации динамических баннеров, интерпретирует robots.txt особым образом; 'YandexMedia' — робот, индексирующий мультимедийные данные;
  • 'YandexImages' — индексатор Яндекс.Картинок;
  • 'YandexCatalog' — «простукивалка» Яндекс.Каталога, используется для временного снятия с публикации недоступных сайтов в Каталоге;
  • 'YaDirectFetcher' — робот Яндекс.Директа, интерпретирует robots.txt особым образом;
  • 'YandexBlogs' — робот, индексирующий посты и комментарии;
  • 'YandexNews' — робот Яндекс.Новостей;
  • 'YandexPagechecker' — валидатор микроразметки;
  • ‘YandexMetrika’ — робот Яндекс.Метрики;
  • ‘YandexMarket’ — робот Яндекс.Маркета;
  • ‘YandexCalendar’ — робот Яндекс.Календаря.

Поисковые роботы Google

Googlebot – основной индексирующий робот; Googlebot News – робот новостных ресурсов; Googlebot Images – робот изображений; Googlebot Video – робот видеоконтента; Google Mobile – робот мобильных версий.

В чем создавать?

Прописать файл robots.txt можно вручную в любом текстовом редакторе (блокнот от Windows, WordPad). Также можно воспользоваться онлайн-сервисами: к примеру, http://pr-cy.ru/robots/, https://seolib.ru/tools/generate/robots/ и др.

Вместо заключения

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