robots.txt — текстовый файл в корне вашего домена, передающий инструкции по краулингу веб-краулерам. Это самый быстрый способ сказать Google, что не нужно краулить — но грубый инструмент, требующий осторожности. Блокировка неправильных путей скрывает контент от Google; непредотвращение правильных путей тратит краулинговый бюджет на нежелательный контент.
Протокол robots.txt
Протокол Robots Exclusion определяет, как работает robots.txt:
- Расположен по адресу
https://example.com/robots.txt(всегда в корне домена, не в поддиректории) User-agent:указывает, к какому краулеру применяются следующие правилаDisallow:указывает пути, к которым краулер не должен обращатьсяAllow:указывает пути в заблокированной директории, которые всё же должны быть доступны*(звёздочка) соответствует любой последовательности символов
Пример:
User-agent: Googlebot
Disallow: /admin/
Disallow: /checkout/
Allow: /admin/public-report/
User-agent: *
Disallow: /private/
Директивы для конкретных краулеров
Ключевая возможность: разные правила для разных краулеров:
Полная блокировка конкретных краулеров:
User-agent: AhrefsBot
Disallow: /
Полностью блокирует краулер Ahrefs, позволяя Googlebot.
Разрешение Googlebot, но не других:
User-agent: Googlebot
Allow: /
User-agent: *
Disallow: /
Блокирует всех краулеров, кроме Googlebot. Полезно для сайтов, которым важна только индексация Google.
Дифференциация Googlebot от краулеров изображений Google:
User-agent: Googlebot
Disallow: /internal-docs/
User-agent: Googlebot-Image
Disallow: /
Запрещает Google индексировать изображения, позволяя обычный краулинг страниц.
Что делает Disallow (и что не делает)
Критически важное заблуждение: Disallow предотвращает краулинг, а не индексацию.
Если внешний сайт ссылается на страницу, находящуюся в заблокированном в robots.txt пути, Google всё равно может проиндексировать страницу — он просто не может её краулить. Googlebot не увидит содержимое страницы, но может создать запись «URL известен, не краулировался» в своём индексе.
Для страниц, которые никогда не должны появляться в результатах поиска, используйте noindex в тегах <meta> страницы — не только Disallow в robots.txt.
Управление частотой краулинга
Директива Crawl-delay поддерживается некоторыми краулерами (включая Bingbot, но не Google):
User-agent: Bingbot
Crawl-delay: 10
Это говорит Bingbot ждать 10 секунд между запросами.
Для Google управление частотой краулинга обрабатывается в GSC (Настройки → Статистика краулинга → Изменить скорость). Google не соблюдает Crawl-delay в robots.txt для Googlebot.
Объявление карты сайта
robots.txt может объявлять расположение XML-карт сайта:
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/news-sitemap.xml
Краулеры, обрабатывающие robots.txt, найдут вашу карту сайта даже если она не отправлена через GSC. Лучшая практика: всегда включать объявления карты сайта в robots.txt.
Распространённые ошибки robots.txt
Блокировка CSS и JavaScript: Некоторые сайты блокируют /assets/, /js/ для уменьшения нагрузки от краулинга. Googlebot нужны CSS и JavaScript для рендеринга страниц при индексации. Блокировка этих ресурсов создаёт сбои рендеринга — страницы появляются без стилей для Google. Никогда не блокируйте CSS/JS-ресурсы.
Блокировка всего сайта:
User-agent: *
Disallow: /
Блокирует всех краулеров от всего. Обычно добавляется CMS при настройке стейджинга и забывается после запуска. Сайт с таким robots.txt не будет краулиться или индексироваться.
Блокировка параметрических URL без учёта их использования: Блокировка /*? предотвращает краулинг всех параметрических URL, включая параметры отслеживания (хорошо), но потенциально также навигационные состояния и результаты поиска.
Отсутствие тестирования после изменений: Синтаксические ошибки robots.txt или непреднамеренные паттерны путей могут незаметно блокировать важный контент. Используйте тестер robots.txt Google в GSC для проверки правил до и после изменений.
Директива Allow для исключений поддиректорий
При блокировке родительской директории с необходимостью оставить конкретные поддиректории краулируемыми:
User-agent: Googlebot
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Более конкретный Allow переопределяет более широкий Disallow для этого пути. Правило приоритета: более длинные, более специфичные пути имеют приоритет над более короткими, более широкими.