Файл robots.txt — это текстовый документ в корневом каталоге сайта, который содержит инструкции для поисковых роботов. Он определяет, какие разделы и страницы сайта можно сканировать, а какие — нет. Корректная настройка этого файла напрямую влияет на управление индексацией и распределение краулингового бюджета. Ошибки в синтаксисе могут привести к исключению важных страниц из поисковой выдачи или, наоборот, к индексации служебной информации.
Почему одна строчка в robots.txt может стоить вам всего трафика
Некорректная директива в файле robots.txt способна полностью исключить сайт из поисковой выдачи. Это не преувеличение. Случайное добавление строки `Disallow: /` после обновления сайта — распространенный сценарий, который блокирует доступ поисковым роботам ко всему контенту. В результате за 1-2 дня органический трафик может упасть на 80-90%. Поисковый робот, получив такой запрет, перестает сканировать страницы, и со временем они исключаются из индекса. Восстановление позиций после исправления ошибки занимает от нескольких дней до нескольких недель. Этот файл — не техническая формальность, а инструмент прямого управления взаимодействием с поисковыми системами. Его настройка требует точности и понимания последствий каждой директивы.
Что такое robots.txt и чем он НЕ является
Основное назначение файла robots.txt — управление сканированием сайта, а не его индексацией. Это два разных процесса. Сканирование — это процесс, когда поисковый робот (например, Googlebot) заходит на страницу, чтобы прочитать ее содержимое. Индексация — это процесс добавления информации о просканированной странице в базу данных поисковой системы, после чего она может появиться в результатах поиска. Robots.txt регулирует именно первый этап. Он дает рекомендации роботам, какие URL посещать не следует. Однако, если на запрещенную к сканированию страницу ведет внешняя ссылка, поисковая система может узнать о ее существовании и добавить в индекс без анализа содержимого. В выдаче такая страница будет с пометкой «Описание для этого результата недоступно из-за файла robots.txt».
Чтобы провести аналогию: robots.txt — это табличка «Служебный вход» на двери. Она сообщает, что заходить не рекомендуется, но не делает помещение невидимым. Если на эту дверь есть указатель из главного холла (внешняя ссылка), посетители будут знать, что она существует. Для гарантированного запрета индексации используется мета-тег `<meta name=»robots» content=»noindex»>` в HTML-коде страницы. Это уже прямой приказ не включать страницу в общий каталог, даже если робот ее просканировал.
Анатомия robots.txt: полный разбор директив и синтаксиса
Файл состоит из набора правил. Каждое правило начинается с указания робота (`User-agent`) и продолжается директивами `Allow` или `Disallow`. Пустые строки и строки, начинающиеся с `#` (комментарии), игнорируются.
Обязательные директивы: User-agent, Disallow, Allow
- User-agent: Указывает, для какого робота предназначены следующие правила. `User-agent: *` означает правило для всех роботов. `User-agent: YandexBot` — только для основного робота Яндекса.
- Disallow: Запрещает сканирование указанных файлов или каталогов. Пример: `Disallow: /admin/` закроет доступ ко всему, что находится в папке /admin/.
- Allow: Разрешает сканирование. Используется для создания исключений из правил `Disallow`. Пример: если нужно закрыть весь каталог, но открыть один файл в нем.
Вспомогательные директивы: Sitemap
- Sitemap: Указывает путь к файлу карты сайта sitemap.xml. Это помогает поисковым системам быстрее находить все важные страницы. Пример: `Sitemap: https://example.com/sitemap.xml`.
Специфичные директивы Яндекса: Crawl-delay и Clean-param
- Crawl-delay: Устанавливает минимальный временной интервал в секундах между загрузками страниц, чтобы снизить нагрузку на сервер. Пример: `Crawl-delay: 0.5` задает задержку в полсекунды. Google не поддерживает эту директиву, для него скорость сканирования настраивается в Google Search Console.
- Clean-param: Помогает роботу определить динамические параметры в URL (например, UTM-метки или параметры сортировки), которые не меняют содержимое страницы. Это позволяет избежать индексации дублей страниц. Пример: `Clean-param: utm_source&utm_medium /some/path`.
Устаревшие директивы: Host
- Host: Ранее использовалась Яндексом для указания главного зеркала сайта. С 2018 года директива не поддерживается. Основное зеркало теперь определяется на основе 301-редиректов и настроек в Яндекс.Вебмастере.
Спецсимволы и регулярные выражения: `*` и `$`
- `*` — означает любую последовательность символов. Пример: `Disallow: /private/*.php` закроет все php-файлы в папке private.
- `$` — означает конец строки. Используется для точного соответствия. Пример: `Disallow: /catalog/$` закроет только страницу /catalog/, но не /catalog/page1.
Логика приоритетов: кто победит в споре Allow и Disallow?
Поисковые роботы выбирают правило с наиболее длинным и точным путем. Длина пути в URL имеет приоритет над директивой. Например, есть два правила:
`Disallow: /catalog/` (длина пути 8 символов)
`Allow: /catalog/product-page/` (длина пути 22 символа)
Робот выберет второе правило для URL `/catalog/product-page/` как более конкретное и разрешит сканирование, несмотря на общий запрет для каталога `/catalog/`.
Как ваш robots.txt может стать угрозой безопасности
Существует опасное заблуждение, что директива `Disallow` скрывает папки. На самом деле она действует наоборот — публично указывает на их существование. Перечисляя в файле пути вроде `Disallow: /admin-panel/`, `Disallow: /backup-files/` или `Disallow: /includes/`, вы создаете для злоумышленников удобный список потенциально уязвимых директорий. Файл robots.txt доступен любому пользователю по стандартному адресу `ваш-сайт.ru/robots.txt`. Никогда не используйте его для сокрытия чувствительной информации. Безопасность служебных разделов должна обеспечиваться настройками сервера (например, ограничением доступа по IP или паролем), а не инструкциями для поисковых роботов.
Пошаговое руководство: создаем и размещаем идеальный robots.txt за 5 минут
Создание и размещение файла не требует специальных навыков и выполняется в несколько шагов.
Шаг 1: Выбор инструмента
Подойдет любой текстовый редактор. Для простых правок достаточно стандартного «Блокнота» в Windows. Для более удобной работы с кодом и подсветкой синтаксиса лучше использовать редакторы вроде Notepad++ или VS Code.
Шаг 2: Создание базовой структуры
Откройте новый файл и начните с указания User-agent. Базовая структура для большинства сайтов выглядит так:
`User-agent: *`
`Disallow:`
Далее добавьте директивы, запрещающие служебные разделы вашей CMS и указывающие путь к карте сайта.
Шаг 3: Сохранение в правильной кодировке (UTF-8)
Это критически важный шаг. Файл должен быть сохранен с именем `robots.txt` в кодировке UTF-8 без BOM. Если сохранить файл в другой кодировке, например, ANSI, поисковые роботы могут проигнорировать его или прочитать некорректно, особенно если в файле есть комментарии на кириллице.
Шаг 4: Загрузка в корневой каталог сайта
Файл `robots.txt` должен располагаться строго в корневом каталоге сайта. Его адрес должен быть `https://example.com/robots.txt`. Загрузить файл можно через FTP-клиент (например, FileZilla) или через файловый менеджер в панели управления хостингом.
Библиотека готовых шаблонов robots.txt (с комментариями)
Ниже представлены оптимизированные шаблоны для популярных систем управления контентом. Не забудьте заменить `https://example.com` на адрес вашего сайта.
Шаблон для WordPress
| Директива | Зачем мы это закрываем? |
|---|---|
| `User-agent: *` | Правила для всех поисковых роботов. |
| `Disallow: /wp-admin/` | Административная панель сайта. |
| `Disallow: /wp-includes/` | Служебные файлы ядра WordPress. |
| `Disallow: /wp-content/plugins/` | Папки плагинов, которые не должны быть в поиске. |
| `Disallow: /wp-content/cache/` | Кэшированные версии страниц. |
| `Disallow: /wp-content/themes/` | Служебные файлы темы оформления. |
| `Disallow: /trackback/` | Механизм уведомлений о ссылках, создает дубли. |
| `Disallow: /feed/` | Все виды RSS-лент, кроме основной. |
| `Disallow: */*/feed/` | Все виды RSS-лент, кроме основной. |
| `Disallow: *?s=` | Результаты внутреннего поиска по сайту. |
| `Disallow: /?s=` | Результаты внутреннего поиска по сайту. |
| `Allow: /wp-admin/admin-ajax.php` | Разрешаем доступ к файлу, необходимому для работы AJAX-запросов. |
| `Sitemap: https://example.com/sitemap.xml` | Указываем путь к карте сайта. |
Шаблон для 1С-Битрикс
| Директива | Зачем мы это закрываем? |
|---|---|
| `User-agent: *` | Правила для всех роботов. |
| `Disallow: /bitrix/` | Служебные файлы и административная часть системы. |
| `Disallow: /upload/` | Папка с загружаемыми файлами, если там нет контента для индексации. |
| `Disallow: /search/` | Страницы результатов внутреннего поиска. |
| `Disallow: /auth/` | Страницы авторизации и регистрации. |
| `Disallow: /personal/` | Личные кабинеты пользователей. |
| `Disallow: /*?print=` | Версии страниц для печати. |
| `Disallow: /*?action=` | Страницы с действиями (например, добавление в корзину). |
| `Disallow: /*&` | URL с несколькими GET-параметрами. |
| `Allow: /bitrix/components/` | Разрешаем доступ к компонентам, если они содержат важные скрипты/стили. |
| `Allow: /bitrix/cache/` | Разрешаем доступ к кэшу, если он влияет на отображение. |
| `Sitemap: https://example.com/sitemap.xml` | Путь к карте сайта. |
Шаблон для Joomla
| Директива | Зачем мы это закрываем? |
|---|---|
| `User-agent: *` | Правила для всех роботов. |
| `Disallow: /administrator/` | Административная панель. |
| `Disallow: /cache/` | Папка с кэшем. |
| `Disallow: /cli/` | Интерфейс командной строки. |
| `Disallow: /components/` | Папка с компонентами. |
| `Disallow: /includes/` | Служебные файлы ядра. |
| `Disallow: /installation/` | Каталог установки системы. |
| `Disallow: /language/` | Языковые файлы. |
| `Disallow: /libraries/` | Библиотеки. |
| `Disallow: /logs/` | Файлы логов. |
| `Disallow: /tmp/` | Временные файлы. |
| `Disallow: /*?` | Закрываем все URL с GET-параметрами. |
| `Sitemap: https://example.com/sitemap.xml` | Путь к карте сайта. |
Блокировка AI-ботов и управление поддоменами
Стандартных правил не всегда достаточно. Рассмотрим несколько нестандартных задач.
Как запретить AI-ботам использовать ваш контент
С развитием больших языковых моделей (LLM) возникла задача запрета сканирования контента ботами, которые собирают данные для их обучения. Это позволяет защитить авторские права и предотвратить неконтролируемое использование материалов. Для блокировки можно использовать следующий блок правил:
`User-agent: GPTBot`
`Disallow: /`
`User-agent: Google-Extended`
`Disallow: /`
`User-agent: CCBot`
`Disallow: /`
`User-agent: ChatGPT-User`
`Disallow: /`
`User-agent: Anthropic-AI`
`Disallow: /`
Управление поддоменами: один сайт — несколько robots.txt
Правила из файла `robots.txt` действуют только для того хоста (домена или поддомена), в корне которого он размещен. Если у вас есть поддомены, например, `blog.example.com` и `shop.example.com`, для каждого из них нужен свой собственный файл `robots.txt`, размещенный в корне соответствующего поддомена. Файл с основного домена `example.com` не будет влиять на них.
Рецепт для интернет-магазина: как закрыть дубли от фильтров и сортировок
В интернет-магазинах фильтры и сортировки генерируют огромное количество URL с GET-параметрами (`?price=100-500&brand=123`). Эти страницы являются дублями с точки зрения контента и расходуют краулинговый бюджет. Их следует закрывать. Это можно сделать с помощью спецсимволов или директивы `Clean-param` (для Яндекса).
Пример с `Disallow`:
`Disallow: *?sort=`
`Disallow: *?price_min=`
`Disallow: *?brand=`
Такой подход закроет все страницы, URL которых содержат указанные параметры.
Динамический robots.txt: автоматическая генерация правил
На крупных проектах, особенно в e-commerce, `robots.txt` может быть не статическим файлом, а скриптом, который генерирует его содержимое «на лету». Это позволяет автоматически управлять сканированием. Например, серверный скрипт может проверять, есть ли товары в определенной категории. Если категория пуста, он добавляет в `robots.txt` директиву `Disallow: /catalog/empty-category/`. Как только в категории появляется хотя бы один товар, директива автоматически убирается. Такой подход позволяет эффективно экономить краулинговый бюджет, не допуская поисковых роботов на тысячи бесполезных страниц листинга без товаров.
A/B-тестирование в robots.txt для оптимизации краулингового бюджета
Чтобы доказать эффективность закрытия «мусорных» страниц, можно провести A/B-тест. Выделите две группы однотипных, маловажных страниц (например, архивные теги за разные годы). Первую группу (тестовую) закройте от сканирования в `robots.txt`. Вторую (контрольную) оставьте открытой. В течение 2-3 месяцев отслеживайте в Google Search Console и Яндекс.Вебмастере скорость и полноту индексации ключевых коммерческих страниц сайта (карточек товаров, услуг). Сравнивая динамику индексации, можно на цифрах оценить, высвободился ли краулинговый бюджет и стал ли поисковый робот чаще посещать важные разделы.
Аудит и отладка: как проверить robots.txt и найти ошибку
После каждого изменения файла `robots.txt` необходимо проверять его корректность. Для этого существуют специальные инструменты.
Проверка через Яндекс.Вебмастер
В разделе «Инструменты» → «Анализ robots.txt» можно загрузить содержимое файла и проверить синтаксис. Сервис покажет ошибки и предупреждения. Также можно ввести URL любой страницы сайта и узнать, разрешено ли ее сканирование для роботов Яндекса.
Проверка через Google Search Console
Аналогичный инструмент есть в Google Search Console. Он находится в разделе «Настройки» → «Сканирование» → «Инструмент проверки файла robots.txt». Он позволяет увидеть, какая версия файла используется Google, проверить синтаксис и протестировать доступ к конкретным URL для Googlebot.
Онлайн-валидаторы
Существуют сторонние сервисы для быстрой проверки синтаксиса файла. Они удобны, если у вас нет доступа к панелям вебмастеров. Они проверяют общую корректность директив, но не могут показать, как конкретный поисковый робот интерпретирует правила.
Детективная работа: анализ логов сервера
Самый точный способ понять, как роботы взаимодействуют с вашим сайтом — проанализировать логи доступа (access logs) сервера. В логах фиксируется каждый запрос к сайту, включая IP-адрес, время, запрошенный URL и User-agent. Изучая логи, можно увидеть, какие User-agent на самом деле посещают сайт, как часто они это делают и соблюдают ли они правила из `robots.txt`. Если вы видите, что робот, которому запрещен доступ к разделу `/private/`, продолжает его активно сканировать, это может означать либо ошибку в синтаксисе `robots.txt`, либо то, что данный робот игнорирует Стандарт исключений для роботов (что характерно для вредоносных ботов и некоторых парсеров).
Критические ошибки в robots.txt, которые нужно избегать
- Симптом: Сайт полностью или частично пропал из поиска. Ошибка: Случайная директива `Disallow: /`. Лечение: Немедленно удалить или закомментировать строку (`# Disallow: /`). Проверить файл в Яндекс.Вебмастере и GSC, затем отправить важные страницы на переобход.
- Симптом: Страницы не удаляются из индекса, хотя на них стоит мета-тег `noindex`. Ошибка: Одновременное использование `Disallow:` для этих страниц. Робот не может просканировать страницу и увидеть мета-тег `noindex`. Лечение: Убрать директиву `Disallow` для страниц, которые нужно закрыть через `noindex`, и дождаться их повторного обхода.
- Симптом: Робот игнорирует правила. Ошибка: Неправильное имя файла (`robot.txt` вместо `robots.txt`) или размещение не в корневом каталоге. Лечение: Проверить имя и расположение файла. Он должен быть доступен по адресу `domain.com/robots.txt`.
- Симптом: Не работают правила для одного из поисковиков. Ошибка: Опечатка в названии User-agent (например, `User-agent: GoogleBot` вместо `User-agent: Googlebot`). Лечение: Проверить названия роботов на соответствие официальной документации.
- Симптом: Сайт плохо отображается в поиске, есть проблемы с мобильной версией. Ошибка: Закрыты от сканирования файлы CSS и JS. `Disallow: /templates/`, `Disallow: /js/`. Лечение: Открыть доступ к файлам стилей и скриптов, необходимых для корректного рендеринга страницы.
- Симптом: Правила не применяются. Ошибка: Файл сохранен в неправильной кодировке (например, UTF-8 с BOM или ANSI). Лечение: Открыть файл в продвинутом текстовом редакторе (Notepad++) и сохранить в кодировке UTF-8.
- Симптом: В индексе много дублей страниц с параметрами. Ошибка: Неправильное использование спецсимволов. Например, `Disallow: /catalog?sort=*` не будет работать. Лечение: Использовать корректный синтаксис: `Disallow: /catalog*?sort=`.
Заключение
Robots.txt — это базовый и необходимый инструмент технической оптимизации сайта. Он дает вебмастеру контроль над процессом сканирования, позволяет экономить краулинговый бюджет и предотвращать попадание в индекс служебных разделов и дублей страниц. Несмотря на свою простоту, файл требует внимательного и аккуратного обращения. Регулярный аудит и проверка после внесения изменений являются обязательными процедурами для поддержания здоровья сайта в поисковых системах.