Всё о robots.txt

Опубликовано: 24 марта 2021 года


Более-менее продвинутые веб-мастера знают об очень важном файле robots.txt. Его правильное заполнение убивает сразу нескольких зайцев. Во-первых, и это важнее, мы избавим приватные страницы от лишних посещений, а во вторых, именно так можно повысить рейтинг сайта в выдаче Яндекса (про Google точно не знаю).
Важно: robots.txt — это набор правил, которыми некоторые поисковые роботы НЕ пользуются. Для безопасности контента следует пользоваться паролями на страницах.

Формат документа

Файл robots.txt разделяется на группы правил. Их может быть и одна, и гораздо больше. В случае простого лендинга с панелью администрации будет достаточно одной группы, но если вы пишите новостной агрегатор, то придётся сделать 10, а то и больше групп.

Фейс-контроль User-agent

В начале каждого правила указывается, для кого оно предназначается. Делается это с помощью записи User-agent. На сегодняшний день миру известно более 300 поисковых роботов, так что если вы не создаёте каких-либо исключений, это правило должно выглядеть так:

User-agent: *

В случае, если вас всё же интересует какой-то конкретный бот, то на месте звёздочки прописывается его имя:

User-agent: Googlebot

Иногда бывает, что одно и то же правило должно быть для двух и более ботов одновременно. Здесь существует два пути решения. Первый — создать каждому роботу свою группу, это рекомендовано делать, если есть вероятность разделения схожих ботов в будущем. Например, Google имеет двух роботов: AdsBot-Google-Mobile и AdsBot-Google. Как можно понять из названия, один сканирует страницы для мобильных устройств, другой — для десктопных. На начальном этапе контент на обоих видах страниц может быть одинаковым, но в больших проектах со временем он может разделяться. И если вы создаёте такой большой проект, то лучше сразу прописать 2 разных группы, чтобы в будущем было проще.
Но есть и второй вариант — в начале группы можно прописать две записи User-agent друг под другом (не через запятую!):

User-agent: AdsBot-Google-Mobile
User-agent: AdsBot-Google

И в этом случае всё, что написано ниже будет применяться для обоих ботов.


Отказ в посещении Disallow

Данное правило запрещает ботам просматривать страницу, папку, файл или весь ресурс. Примеры:
  • Disallow: / — запрет на просмотр всего сайта
  • Disallow: — разрешает просмотр всего сайта, если нет параметров (удивительно)
  • Disallow: /catalog/ — запрещает сканирование папки catalog
  • Disallow: /catalog — запрещает сканирование всего, что начинается с catalog (/catalog/, /catalog.php, /catalogOfCars/), но /carcatalog и /Catalog будут просканированны
  • Disallow: /*.gif — запрещает сканировать и выдавать в поиске все файлы типа .gif или .gif-other type (начинающиеся с .gif)
  • Disallow: /*.gif$ — запрещает сканировать и выдавать в поиске все файлы только типа .gif


Разрешение в посещении Allow

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

Disallow: /
Allow: /catalog/


Зеркало сайта Host

Это правило стоит указывать всегда, даже в случае отсутствия любых ограничений. Host сообщает роботам, какое зеркало сайта главное (какой адрес верный). Важно помнить, что если сайт использует HTTP-протокол, то «http://» в начале пути писать не нужно, но если же используется HTTPS, то «https://» в начале обязательно.

Host: site.com — главное зеркало сайта находится по адресу http://site.com
Host: https://site.com — главное зеркало сайта находится по адресу https://site.com


Навигатор Sitemap

Тому, зачем нужен Sitemap и как его правильно сделать, будет посвящена отдельная статья. Пока что простое определение: sitemap — это xml-документ, содержащий список всех страниц сайта в виде ссылок. В robots.txt его местоположение указывается так:

Sitemap: https://site.com/sitemap.xml


Помощь слабым Crawl-delay

В использовании данного правила нуждаются исключительно сайты, имеющие слабый сервер. В его параметрах мы указываем время в секундах, которое будет проходить между загрузками страниц одного сайта. То есть при Crawl-delay: 3, после полной загрузки страницы https://site.com/first.php робот подождёт 3 секунды, и только после этого начнёт загружать страницу https://site.com/second.php. Этот параметр напрочь игнорируют роботы Google. В идеале, для разных поисковиков нужно указывать различные значения Crawl-delay, поскольку вероятность, что на ваш сайт зайдут с Яндекса, значительно больше, чем то, что на него перейдут из Yahoo!. Также не стоит ставить слишком большие значения — если у вас хорошо проработан контент, выдаваемый на страницах, то значение в несколько десятых секунды вам хватит. Пример был выше, но приведу ещё раз:

Crawl-delay: 0.7


Убираем дубли Clean-param

Если ваш сайт на какой-либо странице принимает в качестве GET-параметров id пользователей, предыдущие страницы или любые другие данные, которые не влияют на динамическое наполнение страницы, то такую страницу стоит добавить в robots.txt для экономии времени роботов, и, соответственно, уменьшению нагрузки на сервер. Немного сложно понять, зачем это, так что рассмотрим пример: на страницу акции ведёт 3 кнопки на сайте. Вам важно знать (для статистики), с какой из трёх страниц к вам пришёл пользователь, и вы вводите в качестве GET-параметра переменную page. Таким образом на странице https://site.com/page1.php ссылка имеет вид https://site.com/discount.php?page=1, на странице https://site.com/page2.php — https://site.com/discount.php?page=2 и на странице https://site.com/page3.php — https://site.com/discount.php?page=3. Но discount.php не зависит от этого параметра, поэтому чтобы робот это знал, мы должны прописать:

Clean-param: page /discount.php

Но на месте page может быть несколько параметров, один из которых (например, id продукта) может быть важен (https://site.com/discount.php?page=1&order=desc&id=4) Тогда мы прописываем:

Clean-param: page&order /discount.php


Комментарии

О важности комментариев в очередной раз писать смысла нет, так что вот вам информация: всё, что в robots.txt начинается с символа # считается комментариями. Используйте их хотя бы перед каждой группой.

Заключение

Возможно, во время прочтения данной статьи возникли вопросы типа «Что будет, если я пропишу Disallow и Allow на одну директорию?», на них я отвечу просто — не надо так делать. Каждый робот написан по-разному, а значит разными способами может решить тот или иной конфликт. Поэтому стоит помнить всего 3 простых рекомендации, чтобы ваш robots.txt был хорошим:
  • Одно правило — одна строка. Если вам нужно указать несколько страниц в правиле Disallow, то пишите каждый файл с новой строки.
  • Проверяйте весь robots.txt, когда добавляете новое правило. В этом, и только в этом случае вы будете уверены, что конфликтов не возникло.
  • Пишите комментарии. Когда robots.txt разрастается до десятков строк, бывает сложно вспомнить, какая группа к чему относится (при выполнении пункта 2), поэтому в комментариях можно человеческим языком описать, что именно происходит в этом блоке. А если robots.txt начинает поддерживать кто-то другой, то при помощи комментариев можно обезопасить себя от его гнева :)
P.s. пример хорошего robots.txt
Название: robots.txt (не Robots.txt или ROBOTS.txt)

# главные параметры
User-agent: *
Disallow:
Host: https://site.com
Sitemap: https://site.com/sitemap.xml
Crawl-delay: 0.2

Автор: Неграш Андрей


Другие наши статьи

Общение с клиентом в XXI веке

14 мин

Meta-теги — как правильно и почему это важно

14 мин