Роботс-протокол
Роботс-протокол (Robots Exclusion Protocol) - стандарт, реализованный в файле robots.txt, который позволяет владельцам сайтов управлять поведением поисковых роботов при сканировании их ресурсов. Файл robots.txt размещается в корне сайта и содержит инструкции о том, какие разделы сайта можно или нельзя посещать роботам.
Роботс-протокол является одним из фундаментальных инструментов SEO и технического SEO, позволяющим оптимизировать бюджет краулинга, скрыть служебные разделы от индексации и предотвратить попадание в поиск нежелательного контента.
В интернет-маркетинге понимание работы robots.txt необходимо для правильной настройки доступности сайта для поисковых систем и управления видимостью контента.
Что такое robots.txt
[править]Robots.txt - это текстовый файл в формате UTF-8, который загружается при обращении к домену по пути /robots.txt (например, https://example.com/robots.txt). Поисковые роботы перед началом сканирования сайта обращаются к этому файлу, чтобы узнать, какие разделы им разрешено или запрещено обходить.
История
[править]Стандарт был предложен в 1994 году Мартином Костером как способ уменьшить нагрузку на серверы от активных краулеров. С тех пор протокол стал де-факто стандартом для всех поисковых систем, хотя формально он не является официальным интернет-стандартом (RFC). В 2019 году был предложен проект стандарта RFC, но поддержка остаётся на усмотрение разработчиков поисковых систем.
Динамическое генерирование robots.txt
[править]Многие современные CMS (например, WordPress, 1С-Битрикс) могут генерировать robots.txt динамически. Это удобно, но создаёт риски:
- Файл может быть недоступен при высокой нагрузке на CMS
- Некоторые хостинги кэшируют динамические файлы, что замедляет обновление правил
- При сбоях CMS robots.txt может отдавать ошибку 500, что поисковики интерпретируют как временную недоступность
Лучшая практика - генерировать статический файл и обновлять его вручную или через CI/CD.
Синтаксис robots.txt
[править]Основные директивы
[править]- User-agent - указывает, к какому роботу применяются последующие правила
- Disallow - запрещает роботу сканировать указанные URL или их части
- Allow - разрешает сканирование (используется для уточнения, особенно в Google)
- Sitemap - указывает путь к файлу карты сайта (sitemap.xml)
- Crawl-delay - задаёт минимальный интервал между запросами робота (поддерживается не всеми поисковиками)
Пример простого robots.txt
[править]User-agent: * Disallow: /admin/ Disallow: /private/ Allow: /public/ Sitemap: https://example.com/sitemap.xml
Этот файл:
- Применяется ко всем роботам (*)
- Запрещает сканирование папок /admin/ и /private/
- Разрешает сканирование /public/ (уточнение к запретам)
- Указывает путь к карте сайта
Специфика Google
[править]Google поддерживает расширенный синтаксис и дополнительные директивы:
- Allow - активно используется для разрешения подпапок внутри запрещённых разделов
- Noindex - в старых версиях, но Google рекомендует использовать мета-тег noindex
- Поддержка регулярных выражений (через * как wildcard)
Специфика Яндекс
[править]Яндекс.Бот также поддерживает большинство стандартных директив и имеет свои особенности:
- Поддержка Crawl-delay (в отличие от Google, который игнорирует эту директиву)
- Clean-param - директива для игнорирования динамических параметров в URL
- Поддержка Host - указание основного зеркала сайта (устарело, сейчас используется через Яндекс.Вебмастер)
Пример для Яндекса:
User-agent: Yandex Disallow: /admin/ Crawl-delay: 2 Clean-param: utm_source&utm_medium /catalog Host: https://example.com
Как работают правила
[править]Приоритет правил
[править]Правила применяются от наиболее специфичного User-agent к общему. Если указан конкретный робот (например, User-agent: Googlebot), правила для него будут иметь приоритет над общими (User-agent: *).
Внутри одного блока применяется самое длинное совпадающее правило (у Google). То есть, если есть Disallow: /admin и Allow: /admin/public, второе правило будет иметь приоритет для URL /admin/public/page.html.
Пути и шаблоны
[править]- Пути указываются относительно корня сайта
- Пустая директива Disallow: означает "ничего не запрещено" (разрешено всё)
- Disallow: / - запрещено всё
- Звёздочка * - любая последовательность символов (wildcard)
- Знак доллара $ - конец строки (например, Disallow: /*.pdf$ запретит все PDF-файлы)
Примеры с wildcard:
User-agent: Googlebot Disallow: /*.pdf$ # запретить все PDF-файлы Disallow: /private/*/temp/ # запретить temp-папки внутри private
Ошибки в Wildcard-выражениях
[править]Типичные проблемы при использовании *:
- Слишком широкие маски - Disallow: /user закроет не только /user, но и /userpage, /users
- Забытый $ - Disallow: /*.pdf закроет не только PDF-файлы, но и любые URL, содержащие .pdf (например, /page/pdf-article.html)
- Избыточное использование - сложные маски могут замедлить обработку файла
Что можно и нужно закрывать
[править]Типичные разделы для закрытия
[править]- Административные панели (/admin/, /wp-admin/)
- Служебные разделы (/scripts/, /includes/, /cache/)
- Страницы с дублирующимся контентом (/print/, /pdf/)
- Страницы результатов поиска по сайту (/search/, /catalog/search/)
- Технические файлы (.git/, .env, логи)
- Личные кабинеты пользователей
- Разделы с конфиденциальной информацией
Что нельзя закрывать
[править]- CSS и JavaScript файлы (если закрыть, робот не сможет правильно отрендерить страницу)
- Изображения товаров (если нужно, чтобы они были в поиске картинок)
- Важные разделы сайта, которые должны индексироваться
robots.txt и индексация
[править]Важно понимать разницу между запретом сканирования и запретом индексации:
- Robots.txt (Disallow) - запрещает роботу скачивать страницу. Если страница не скачана, она не может быть проиндексирована. Но URL может оказаться в поиске (по ссылкам с других сайтов), и пользователи увидят только заголовок и URL, без описания.
- Мета-тег noindex - запрещает показывать страницу в результатах поиска, но робот должен сначала скачать страницу, чтобы увидеть этот тег.
Правильный подход для большинства случаев:
- Через robots.txt закрывать служебные разделы, которые не должны попадать в индекс
- Для страниц, которые могут быть полезны, но не должны индексироваться (например, дубли), использовать noindex
Кэширование robots.txt поисковиками
[править]Поисковые системы кэшируют robots.txt, чтобы не загружать его при каждом визите:
- Google кэширует robots.txt до 24 часов, но может перезапрашивать чаще при подозрении на изменения
- Яндекс также кэширует, точные сроки не раскрываются
Если вы изменили robots.txt, изменения вступят в силу не сразу. Для ускорения можно:
- В Google Search Console использовать инструмент "Проверка robots.txt"
- В Яндекс.Вебмастере - "Переобход robots.txt"
- Дождаться естественного обновления кэша (обычно 1-2 дня)
Ошибки и риски
[править]Типичные ошибки
[править]- Случайное закрытие всего сайта - Disallow: / для всех роботов приводит к полному исключению из поиска
- Опечатки в путях - например, Disallow: /admin с лишним пробелом
- Неправильный синтаксис - отсутствие двоеточий, лишние символы
- Закрытие CSS и JS - ломает рендеринг страницы
- Игнорирование регистра - пути обычно чувствительны к регистру
Риски
[править]- Утечка данных - если не закрыть приватные разделы
- Потеря трафика - если случайно закрыть важные страницы
- Нагрузка на сервер - неправильный Crawl-delay может перегрузить сервер или замедлить индексацию
- Конфликты правил - сложные конфигурации могут работать не так, как задумано
Проверка robots.txt
[править]Инструменты
[править]- Google Search Console - раздел "Проверка robots.txt", позволяет увидеть, как Google интерпретирует файл
- Яндекс.Вебмастер - аналогичный инструмент
- Онлайн-валидаторы - множество сервисов для проверки синтаксиса
- Браузер - просто открыть https://site.com/robots.txt и проверить доступность
Что проверять
[править]- Доступен ли файл по правильному адресу (код ответа 200, не 404)
- Нет ли синтаксических ошибок
- Соответствие реальной структуре сайта
- Не закрыто ли важное
- Правильно ли указаны User-agent
robots.txt и разные роботы
[править]Можно задавать правила для конкретных поисковых систем:
# Для Google User-agent: Googlebot Disallow: /admin/ # Для Яндекса User-agent: Yandex Disallow: /admin/ Crawl-delay: 2 # Для всех остальных User-agent: * Disallow: /private/
Важно помнить, что разные поисковики могут по-разному интерпретировать правила. Например, Google игнорирует Crawl-delay, а Яндекс поддерживает.
Примеры для популярных CMS
[править]WordPress
[править]User-agent: * Disallow: /wp-admin/ Disallow: /wp-includes/ Disallow: /wp-content/plugins/ Allow: /wp-content/uploads/ Allow: /wp-content/themes/ # важно для CSS и JS
1С-Битрикс
[править]User-agent: * Disallow: /bitrix/ Disallow: /personal/ Disallow: /upload/
OpenCart
[править]User-agent: * Disallow: /admin/ Disallow: /catalog/ Disallow: /system/
