Директивы Disallow и Allow: как использовать совместно и раздельно

В данной статье речь пойдет о самых популярных директивах Dissalow и Allow в файле robots.txt.

Disallow

Disallow – директива, запрещающая индексирование отдельных страниц, групп страниц, их отдельных файлов и разделов сайта(папок). Это наиболее часто используемая директива, которая исключает из индекса:

  • страницы с результатами поиска на сайте;
  • страницы посещаемости ресурса;
  • дубли;
  • сервисные страницы баз данных;
  • различные логи;
  • страницы, содержащие персональные данные пользователей.

Примеры директивы Disallow в robots.txt:  

# запрет на индексацию всего веб-ресурса
User-agent: Yandex
Disallow: /
# запрет на обход страниц, адрес которых начинается с /category
User-agent: Yandex
Disallow: /category
# запрет на обход страниц, URL которых содержит параметры
User-agent: Yandex
Disallow: /page?
# запрет на индексацию всего раздела wp-admin
User-agent: Yandex
Disallow: /wp-admin
# запрет на индексацию подраздела plugins
User-agent: Yandex
Disallow: /wp-content/plugins
# запрет на индексацию конкретного изображения в папке img
User-agent: Yandex
Disallow: /img/images.jpg
# запрет индексации конкретного PDF документа
User-agent: Yandex
Disallow: /dogovor.pdf
# запрет на индексацию не только /my, но и /folder/my или /folder/my
User-agent: Yandex
Disallow: /*my

Правило Disallow работает с масками, позволяющими проводить операции с группами файлов или папок.

После данной директивы необходимо ставить пробел, а в конце строки пробел недопустим. В одной строке с Disallow через пробел можно написать комментарий после символа “#”.

Allow

В отличие от Disallow, данное указание разрешает индексацию определенных страниц, разделов или файлов сайта. У директивы Allow схожий синтаксис, что и у Disallow.

Хотя окончательное решение о посещении вашего сайта роботами принимает поисковая система, данное правило дополнительно призывает их это делать.

Примеры Allow в robots.txt:

# разрешает индексацию всего каталога /img/
User-agent: Yandex
Allow: /img/
# разрешает индексацию PDF документа
User-agent: Yandex
Allow: /prezentaciya.pdf
# открывает доступ к индексированию определенной HTML страницы
User-agent: Yandex
Allow: /page.html
# разрешает индексацию по маске *your
User-agent: Yandex
Allow: /*your
# запрещает индексировать все, кроме страниц, начинающихся с /cgi-bin
User-agent: Yandex
Allow: /cgi-bin
Disallow: /

Для директивы применяются аналогичные правила, что и для Disallow.

Совместная интерпретация директив

Поисковые системы используют Allow и Disallow из одного User-agent блока последовательно, сортируя их по длине префикса URL, начиная от меньшего к большему. Если для конкретной страницы веб-сайта подходит применение нескольких правил, поисковый бот выбирает последний из списка. Поэтому порядок написания директив в robots никак не сказывается на их использовании роботами.

На заметку. Если директивы имеют одинаковую длину префиксов и при этом конфликтуют между собой, то предпочтительнее будет Allow.

Пример robots.txt написанный оптимизатором:

User-agent: Yandex
Allow: /
Allow: /catalog/phones
Disallow: /catalog

Пример отсортированного файл robots.txt поисковой системой:

User-agent: Yandex
Allow: /
Disallow: /catalog
Allow: /catalog/phones
# запрещает посещать страницы, начинающиеся с /catalog,
# но разрешает индексировать страницы, начинающиеся с /catalog/phones

Пустые Allow и Disallow

Когда в директивах отсутствуют какие-либо параметры, поисковый бот интерпретирует их так:

# то же, что и Allow: / значит разрешает индексировать весь сайт
User-agent: Yandex
Disallow:
# не учитывается роботом
User-agent: Yandex
Allow:

Специальные символы в директивах

В параметрах запрещающей директивы Disallow и разрешающей директивы Allow можно применять специальные символы “$” и “*”, чтобы задать конкретные регулярные выражения.

Специальный символ “*” разрешает индексировать все страницы с параметром, указанным в директиве. К примеру, параметр /katalog* значит, что для ботов открыты страницы /katalog, /katalog-tovarov, /katalog-1 и прочие. Спецсимвол означает все возможные последовательности символов, даже пустые.

Примеры:

User-agent: Yandex
Disallow: /cgi-bin/*.aspx # запрещает /cgi-bin/example.aspx
                          # и /cgi-bin/private/test.aspx
Disallow: /*private # запрещает не только /private
                    # но и /cgi-bin/private

По стандарту в конце любой инструкции, описанной в Robots, указывается специальный символ “*”, но делать это не обязательно.

Пример:

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: 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
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:
# тогда весь сайт будет доступен для индексирования

Я всегда стараюсь следить за актуальностью информации на сайте, но могу пропустить ошибки, поэтому буду благодарен, если вы на них укажете. Если вы нашли ошибку или опечатку в тексте, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписаться
Уведомить о
guest
1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Alex
Alex
15.08.2023 16:24

Можно ли в robots.txt всё, что после последнего слеша в примере /price/napravlenie/fio/ закрыть типа Disallow: /price/*/*/* ?
Т.е. индексируются /price/, /price/napravlenie/, /price/napravlenie/fio/, но /price/napravlenie/fio/blablabla не индексируется?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: