В данной статье речь пойдет о самых популярных директивах 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:
# тогда весь сайт будет доступен для индексирования
Можно ли в robots.txt всё, что после последнего слеша в примере /price/napravlenie/fio/ закрыть типа Disallow: /price/*/*/* ?
Т.е. индексируются /price/, /price/napravlenie/, /price/napravlenie/fio/, но /price/napravlenie/fio/blablabla не индексируется?
Disallow: /price/napravlenie/fio/*