Строки в robots.txt читают сверху вниз и думают, что так же поступает робот. Разбираем, по какому правилу на самом деле разрешается конфликт и почему привычная логика «кто первый, тот и прав» здесь не работает.
Коротко
- При конфликте применяется правило с более длинным путём.
- При равной длине — менее ограничивающее.
- Порядок строк в файле значения не имеет.
- Звёздочка и знак конца адреса меняют длину правила.
Какое правило побеждает
Сравнивается длина пути в правиле
Побеждает более длинный.
При равной длине — менее ограничивающее
То есть разрешающее.
Порядок строк не имеет значения
Файл не читается сверху вниз.
Третий пункт противоречит интуиции сильнее остальных. Привычка к настройкам сервера подсказывает, что более ранняя строка важнее, — в robots.txt это не так. Правило выбирается по специфичности, а не по месту в файле. Про сам файл — в статье про составление robots.txt.
Как это выглядит на примерах
| Правила | Адрес | Результат |
|---|---|---|
Disallow: / и Allow: /p | /page | Разрешено: путь в Allow длиннее |
Disallow: / и Allow: /$ | /page.htm | Запрещено: Allow относится только к корню |
| Оба правила одинаковой длины | Любой | Разрешено: выбирается менее строгое |
Вторая строка показывает, как знак конца адреса меняет смысл правила. Без него Allow: / разрешало бы весь сайт; с ним оно относится строго к одному адресу — корню. Это самый частый источник неожиданностей при точечных разрешениях.
Подстановочные символы
Что поддерживается
- Звёздочка — любое число любых символов
- Знак доллара — конец адреса
- Оба можно сочетать в одном правиле
Что нужно помнить
- Завершающая звёздочка игнорируется
- Звёздочка удлиняет правило
- Опечатка в шаблоне закрывает лишнее
Вторая строка справа объясняет неожиданные результаты. Правило со звёздочкой может оказаться длиннее предполагаемого и перебить то, которое вы считали главным. Поэтому сложные шаблоны проверяют на конкретных адресах, а не на глаз.
Частые ошибки
| Ошибка | Что получается |
|---|---|
| Рассчитывать на порядок строк | Работает не то правило |
| Пустой Disallow вместо запрета | Пустое значение ничего не запрещает |
| Запрет каталога без слеша | Закрывается больше, чем планировалось |
| Разные правила для разных роботов | Секция выбирается одна, наиболее подходящая |
| Закрытие скриптов и стилей | Страница отрисовывается неправильно |
Последняя строка мешает обработке страниц сильнее всего. Если роботу запрещены файлы оформления и скриптов, он не может увидеть страницу так, как её видит человек. Про это — в статьях про что видит робот и JavaScript-сайты.
Как проверять
Проверяйте конкретные адреса
А не файл целиком.
Берите по образцу каждого типа страниц
Товар, категория, статья, служебная.
Используйте инструменты панелей
Они показывают, какое правило сработало.
Проверяйте после каждой правки
Одна строка меняет поведение многих адресов.
Храните историю изменений
Чтобы знать, когда что закрыли.
Третий пункт экономит спор о том, что должно было сработать. Инструмент показывает не только результат, но и правило, которое его дало, — это снимает вопрос сразу. Помните и об общем ограничении: запрет обхода не убирает страницу из индекса, об этом в статье про закрытие страниц от индексации.
Частые вопросы
Какое правило применяется при конфликте Allow и Disallow?
То, у которого путь длиннее. Если длина одинаковая, применяется менее ограничивающее, то есть разрешающее правило.
Влияет ли порядок строк в robots.txt?
Нет. Файл не читается сверху вниз: правило выбирается по специфичности, а не по месту в файле.
Какие подстановочные символы поддерживаются?
Звёздочка — любое число любых символов, и знак доллара — конец адреса. Завершающая звёздочка игнорируется, а звёздочка внутри правила удлиняет его путь.
Что нельзя закрывать в robots.txt?
Файлы оформления и скриптов: без них робот не может увидеть страницу так, как её видит человек, и отрисовка получится неправильной.
Читайте также
Продвинем сайт в поиске
Соберём семантику, доведём структуру и текст до уровня топа и будем вести проект до заявок.
Обсудить SEO-продвижение