Поиск

Продвинутое использование robots.txt без ошибок — руководство для SEO

12 Августа 2019

1 сентября 2019 года Google прекратит поддержку нескольких директив в robots.txt. В список попали: noindex, crawl-delay и nofollow. Вместо них рекомендуется использовать:

  • Мета-тег noindex, как наиболее эффективный способ удалить страницу из индекса.

  • 404 и 410 коды ответа сервера. В ряде случаев, 410 отрабатывает значительно быстрей для удаления URL из индекса.

  • Защита паролем. Страницы, требующие авторизации, также обычно удаляются из индекса (важно — именно страницы, полностью скрытые под логином, а не часть контента).

  • Временное удаление страницы из индекса с помощью инструмента в Search Console.

  • Disallow в robots.txt.

Тем не менее, robots.txt по-прежнему остаётся одним из главных файлов для SEO-специалиста. Давайте вспомним самые полезные директивы от простых, до менее очевидных.

robots.txt

Это простой текстовый файл, который содержит инструкции для поисковых краулеров — какие страницы сайта не следует посещать, где лежит наш Sitemap.xml и для каких поисковых роботов распространяются правила.

Файл размещается в корневой директории сайта. Например:

  • https://tools.pixelplus.ru/robots.txt

  • https://www.mozilla.org/robots.txt

Прежде чем начать сканирование сайта, краулеры проверяют наличие robots.txt и находят правила специфичные для их User-Agent, например Googlebot. Если таких нет — следуют общим инструкциям.

Действующие правила robots.txt

User-Agent

У каждой поисковой системы есть свои «агенты пользователя». По сути, это имя краулера, которое помогает дать определённые указания конкретному ему.

Если брать шире, то User-Agent — клиентское приложение на стороне поисковой системы, в некотором смысле имитирующее браузер или, например, мобильное устройство.

Примеры:

  • User-agent: * — символ астериск используются для обозначения сразу же всех краулеров.

  • User-agent: Yandex — основной краулер Яндекс-поиска.

  • User-agent: Google-Image — робот поиска Google по картинкам.

  • User-agent: AhrefsBot — краулер сервиса Ahrefs.

Важно: если в файле указаны правила для конкретных User-Agent, то роботы будут следовать только своим инструкциям, игнорируя общие правила.

В примере ниже краулер DuckDukcGo сможет сканировать папки сайта /api/ и /tmp/, несмотря на астериск («звёздочку»), отвечающий за инструкции всем роботам.

    User-agent: *
    Disallow: /tmp/
    Disallow: /api/

    User-agent: DuckDuckBot
    Disallow: /duckhunt/

Disallow

Директива, которая позволяет блокировать от индексации полностью весь сайт или определённые разделы.

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

    User-agent: *

    # Закрываем раздел /cms и все файлы внутри

    Disallow: /cms

    # Закрываем папку /images/resized/ (сами изображения разрешены к сканированию)

    Disallow: /api/resized/

Упростить инструкции помогают операторы:

  • * — любая последовательность символов в URL. По умолчанию к концу каждого правила, описанного в файле robots.txt, приписывается спецсимвол *.

  • $ — символ в конце URL-адреса, он используется чтобы отменить использование * на конце правила.

    User-agent: *

    # Закрываем URL, начинающиеся с /photo после домена. Например:
    #     /photos
    #     /photo/overview

    Disallow: /photo

    # Закрываем все URL, начинающиеся с /blog/ после домена и заканчивающиеся /stats/

    Disallow: /blog/*/stats$

Важно: в robots.txt не нужно закрывать JS и CSS-файлы, они понадобятся поисковым роботом для правильного отображения (рендеринга) контента.

Allow

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

    User-agent: *

    # Блокируем весь раздел /admin

    Disallow: /admin

    # Кроме файла /admin/css/style.css

    Allow: /admin/css/style.css

    # Открываем все файлы в папке /admin/js. Например:
    #     /admin/js/global.js
    #     /admin/js/ajax/update.js

    Allow: /admin/js/

Также Allow можно использовать для отдельных User-Agent.

    # Запрещаем доступ к сайту всем роботам

    User-agent: *
    Disallow: /

    # Кроме краулера Яндекса

    User-agent: Yandex
    Allow: /

Crawl-delay

Директива, теряющая актуальность в случае Goolge, но полезная для работы с другими поисковиками.

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

    User-agent: *
    Crawl-delay: 5

Несмотря на то, что Googlebot игнорирует подобные правила, настроить скорость сканирования можно в Google Search Console проекта.

Интересно, что китайский Baidu также не обращает внимание на Crawl-delay в robots.txt, а Bing воспринимает команду как «временное окно», в рамках которого BingBot будет сканировать сайт только один раз.

Важно: если установлено высокое значение Crawl-delay, убедитесь, что ваш сайт своевременно индексируется. В сутках 86 400 секунд, при Crawl-delay: 30 будет просканировано не более 2880 страниц в день, что мало для крупных сайтов.

Sitemap

Одно из ключевых применений robots.txt в SEO — указание на расположение карты сайты. Обратите внимание, используется полный URL-адрес (их может быть несколько).

    Sitemap: https://www.example.com/sitemap.xml
    Sitemap: https://www.example.com/blog-sitemap.xml

Нужно иметь в виду:

  • Директива Sitemap указывается с заглавной S.

  • Sitemap не зависит от инструкций User-Agent.

  • Нельзя использовать относительный адрес карты сайта, только полный URL.

  • Файл XML-карты сайта должен располагаться на том же домене.

Также убедитесь, что ссылка возвращает статус 200 OK без редиректов. Проверить можно с помощью инструмента, определяющего ответ сервера или анализа XML-карты сайта.

Типичный robots.txt

Ниже представлены простые и распространенные шаблоны команд для поисковых роботов.

Разрешить полный доступ

Обратите внимание, правило для Disallow в этом случае не заполняется.

    User-agent: *
    Disallow:

Полная блокировка доступа к хосту

    User-agent: *
    Disallow: /

Запрет конкретного раздела сайта

    User-agent: *
    Disallow: /admin/

Запрет сканирования определенного файла

    User-agent: *
    Disallow: /admin/my-embarrassing-photo.png

Распространенная ошибка

Установка индивидуальных правил для User-Agent без дублирования инструкций Disallow.

Как мы уже выяснили, при указании директивы User-Agent, соответствующий краулер будет следовать только тем правилам, что установлены именно для него. Не забывайте дублировать общие директивы для всех User-Agent.

В примере ниже — слегка измененный robots.txt сайта IMDB. Общие правила Disallow не будут распространяться на бот ScoutJet. А вот Crawl-delay, напротив, установлена только для него.

    # отредактированная версия robots.txt сайта IMDB

    #
    # Задержка интервала сканирования для ScouJet
    #
    
    User-agent:ScouJet
    Crawl-delay: 3
    #
    #

    #
    # Все остальные
    #

    User-agent: *
    Disallow: /tvschedule
    Disallow: /ActorSearch
    Disallow: /ActressSearch
    Disallow: /AddRecommendation
    Disallow: /ads/
    Disallow: /AlternateVersions
    Disallow: /AName
    Disallow: /Awards
    Disallow: /BAgent
    Disallow: /Ballot/

    #
    #
    Sitemap: https://www.imdb.com/sitemap_US_index.xml.gz

Противоречия директив

Общее правило — если две директивы противоречат друг другу, приоритетом пользуется та, в которой большее количество символов.

    User-agent: *

    # /admin/js/global.js разрешён к сканированию
    # /admin/js/update.js по-прежнему запрещён

    Disallow: /admin
    Allow: /admin/js/global.js

Может показаться, что файл /admin/js/global.js попадает под правило блокировки содержащего его раздела Disallow: /admin/. Тем не менее, он будет доступен для сканирования, в отличие от всех остальных файлов в каталоге.

Список распространенных User-Agent

User-Agent #
Google  
Googlebot Основной краулер Google
Googlebot-Image Робот поиска по картинкам
Bing  
Bingbot Основной краулер Bing
MSNBot Старый, но всё ещё использующийся краулер Bing
MSNBot-Media Краулер Bing для изображений
BingPreview Отдельный краулер Bing для Snapshot-изображений
Яндекс  
YandexBot Основной индексирующий бот Яндекса
YandexImages Бот Яндеса для поиска по изображениям
Baidu  
Baiduspider Главный поисковый робот Baidu
Baiduspider-image Бот Baidu для картинок
Applebot Краулер для Apple. Используется для Siri поиска и Spotlight
SEO-инструменты  
AhrefsBot Краулер сервиса Ahrefs
MJ12Bot Краулер сервиса Majestic
rogerbot Краулер сервиса MOZ
PixelTools Краулер «Пиксель Тулс»
Другое  
DuckDuckBot Бот поисковой системы DuckDuckGo

Советы по использованию операторов

Как упоминалось выше, широко применяются два оператора: * и $. С их помощью можно:

1. Заблокировать определённые типы файлов.

    User-agent: *

    # Блокируем любые файлы с расширением .json

    Disallow: /*.json$

В примере выше астериск * указывает на любые символы в названии файла, а оператор $ гарантирует, что расширение .json находится точно в конце адреса, и правило не затрагивает страницы вроде /locations.json.html (вдруг есть и такие).

2. Заблокировать URL с параметром ?, после которого следуют GET-запросы (метод передачи данных от клиента серверу).

Этот приём активно используется, если у проекта настроено ЧПУ для всех страниц и документы с GET-параметрами точно являются дублями.

    User-agent: *

    # Блокируем любые URL, содержащие символ ?

    Disallow: /*?

Заблокировать результаты поиска, но не саму страницу поиска.

    User-agent: *

    # Блокируем страницу результатов поиска

    Disallow: /search.php?query=*

Имеет ли значение регистр?

Определённо да. При указании правил Disallow / Allow, URL адреса могут быть относительными, но обязаны сохранять регистр.

    User-agent: *

    # /users разрешены для сканирования, поскольку регистр разный

    Disallow: /Users

Но сами директивы могут объявляться как с заглавной, так и с прописной: Disallow: или disallow: — без разницы. Исключение — Sitemap: всегда указывается с заглавной.

Как проверить robots.txt?

Есть множество сервисов проверки корректности файлов robots.txt, но, пожалуй, самые надёжные: Google Search Console и Яндекс.Вебмастер.

Для мониторинга изменений, как всегда, незаменим «Модуль ведения проектов»:

  • Контроль индексации на вкладке «Аудит» — динамика сканирования страниц сайта в Яндексе и Google.

  • Контроль изменений в файле robots.txt. Теперь точно не упустите, если кто-то из коллег закрыл сайт от индексации (или наоборот).

Держите свои robots.txt в порядке, и пусть в индекс попадает только необходимое!

Рейтинг статьи:

По оценкам 36 пользователей

Узнайте, как увеличить SEO‑трафик сайта в 3+ раза?

Укажите домен вашего сайта, приоритетные регионы продвижения и получите самый
полный список точек взрывного роста трафика и заявок с вашего сайта

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

Задайте вопрос или оставьте комментарий

Инструменты доступны после быстрой регистрации

Прочитал и принимаю условия Оферты сервиса.