Директивы Disallow и Allow
- Disallow
- Allow
- Совместное использование директив
- Директивы Allow и Disallow без параметров
- Использование спецсимволов * и $
- Обработка символа #
- Примеры интерпретации директив
Disallow
- страницы с конфиденциальными данными;
- страницы с результатами поиска по сайту;
- статистика посещаемости сайта;
- дубликаты страниц;
- разнообразные логи;
- сервисные страницы баз данных.
Примеры:
User-agent: Yandex
Disallow: / # запрещает обход всего сайта
User-agent: Yandex
Disallow: /catalogue # запрещает обход страниц, адрес которых начинается с /catalogue
User-agent: Yandex
Disallow: /page? # запрещает обход страниц, URL которых содержит параметры
Allow
Директива разрешает обход разделов или отдельных страниц сайта.
Примеры:
User-agent: Yandex
Allow: /cgi-bin
Disallow: /
# запрещает скачивать все, кроме страниц
# начинающихся с '/cgi-bin'
User-agent: Yandex
Allow: /file.xml
# разрешает скачивание файла file.xml
User-agent
, Disallow
и Allow
.Совместное использование директив
Директивы Allow
и Disallow
из соответствующего User-agent
блока сортируются по длине префикса URL (от меньшего к большему) и применяются последовательно. Если для данной страницы сайта подходит несколько директив, то робот выбирает последнюю в порядке появления в сортированном списке. Таким образом, порядок следования директив в файле robots.txt не влияет на использование их роботом.
Allow
. # Исходный robots.txt:
User-agent: Yandex
Allow: /
Allow: /catalog/auto
Disallow: /catalog
# Сортированный robots.txt:
User-agent: Yandex
Allow: /
Disallow: /catalog
Allow: /catalog/auto
# запрещает скачивать страницы, начинающиеся с '/catalog',
# но разрешает скачивать страницы, начинающиеся с '/catalog/auto'.
Общий пример:
User-agent: Yandex
Allow: /archive
Disallow: /
# разрешает все, что содержит '/archive', остальное запрещено
User-agent: Yandex
Allow: /obsolete/private/*.html$ # разрешает html файлы
# по пути '/obsolete/private/...'
Disallow: /*.php$ # запрещает все '*.php' на данном сайте
Disallow: /*/private/ # запрещает все подпути содержащие
# '/private/', но Allow выше отменяет
# часть запрета
Disallow: /*/old/*.zip$ # запрещает все '*.zip' файлы, содержащие
# в пути '/old/'
User-agent: Yandex
Disallow: /add.php?*user=
# запрещает все скрипты 'add.php?' с параметром 'user'
Директивы Allow и Disallow без параметров
Если директивы не содержат параметры, робот учитывает данные следующим образом:
User-agent: Yandex
Disallow: # то же, что и Allow: /
User-agent: Yandex
Allow: # не учитывается роботом
Использование спецсимволов * и $
При указании путей директив Allow и Disallow можно использовать спецсимволы * и $, чтобы задавать определенные регулярные выражения.
Спецсимвол * означает любую (в том числе пустую) последовательность символов. Примеры:
User-agent: Yandex
Disallow: /cgi-bin/*.aspx # запрещает '/cgi-bin/example.aspx'
# и '/cgi-bin/private/test.aspx'
Disallow: /*private # запрещает не только '/private',
# но и '/cgi-bin/private'
По умолчанию к концу каждого правила, описанного в файле robots.txt, приписывается спецсимвол *. Пример:
User-agent: Yandex
Disallow: /cgi-bin* # блокирует доступ к страницам
# начинающимся с '/cgi-bin'
Disallow: /cgi-bin # то же самое
Чтобы отменить * на конце правила, можно использовать спецсимвол $, например:
User-agent: Yandex
Disallow: /example$ # запрещает '/example',
# но не запрещает '/example.html'
User-agent: Yandex
Disallow: /example # запрещает и '/example',
# и '/example.html'
Спецсимвол $ не запрещает указанный * на конце, то есть:
User-agent: Yandex
Disallow: /example$ # запрещает только '/example'
Disallow: /example*$ # так же, как 'Disallow: /example'
# запрещает и /example.html и /example
Обработка символа #
В соответствии со стандартом перед каждой директивой User-agent рекомендуется вставлять пустой перевод строки. Символ # предназначен для описания комментариев. Все, что находится после этого символа и до первого перевода строки не учитывается.
Страницы с адресами вида https://example.com/page#part_1 не индексируются поисковым роботом и будут обходиться по адресу https://example.com/page. Поэтому в директиве достаточно указать адрес страницы без якоря.
Если не учесть этой особенности и написать запрещающую директиву с символом #
, она может закрыть от индексирования весь сайт. Например, директиву вида Disallow: /#
поисковая система воспримет как Disallow: /
— полный запрет на индексирование.
Примеры интерпретации директив
User-agent: Yandex
Allow: /
Disallow: /
# все разрешается
User-agent: Yandex
Allow: /$
Disallow: /
# запрещено все, кроме главной страницы
User-agent: Yandex
Disallow: /private*html
# запрещается и '/private*html',
# и '/private/test.html', и '/private/html/test.aspx' и т. п.
User-agent: Yandex
Disallow: /private$
# запрещается только '/private'
User-agent: *
Disallow: /
User-agent: Yandex
Allow: /
# так как робот Яндекса
# выделяет записи по наличию в строке 'User-agent:',
# результат — все разрешается