Директива Disallow
Запрещающая директива, и одновременно наиболее часто используемая в файле robots.txt. Disallow запрещает индексацию сайта или его части, согласно пути, прописанному в значении этой директивы.
Пример:
User-agent: Yandex
Disallow: /
Запрещает весь сайт к индексации для поискового бота яндекса. Прежде, чем привести другие примеры, необходимо объяснить о существовании специальных символов * и $. Символ * означает любое количество любых символов, например, под маску /dir* подходит как /dir1, так и /dir291, /diroooooo или просто /dir. По умолчанию, при интерпретации ботом к указанному пути приписывается символ *. Например, следующие директивы полностью идентичны:
Disallow: /css
Disallow: /css*
Чтобы избежать при интерпретации «автоматического дописывания» символа * в конце пути, служит другой специальный символ - $. Этот символ означает конец подстроки сравнения. Таким образом, следующий блок будет запрещать /dir, но не будет запрещать пути /dir1, /dir291 или /diroooooo.
User-agent: *
Disallow: /dir$
Директива Allow
Эта директива имеет синтаксис, сходный с Disallow, но в противоположность директиве Disallow наоборот носит разрешительный характер. К примеру, в следующем примере всем роботам запрещается индексировать весь сайт, кроме путей, начинающихся с /subname.
User-agent: *
Allow: /subname
Disallow: /
Приоритет и совместное использование директив Allow и Disallow.
Важно понимать, что будет, если некоторые пути подходят как под правила Allow, так и Disallow. Если раньше результат определялся порядком следования директив Allow и Disallow в файле robots.txt, то сейчас применяется совершенно другой алгоритм. Результат действия Allow и Disallow определяется, исходя из максимального соответствующего пути в пределах одного блока User-agent. Все директивы Allow и Disallow из одной секции сортируются в соответствии с длиной указанной в значениях подстроки в порядке увеличения их длины. На этапе принятия решения приоритет будет иметь то правило, которое расположено в отсортированном списке ниже, то есть наиболее точно соответствует имени. Пример:
User-agent: *
Allow: /images
Disallow: /image
Будет разрешать к индексации пути, начинающиеся с /images, но в то же время имена, такие как /image555 или просто /image индексироваться не будут. Хотя путь /images888 и подходит под запрещающую директиву Disallow, разрешающее правило по принципу ранжирования подходит более точно.
В случае, когда Disallow и Allow одновременно соответствуют префиксу одинаковой длины, приоритет имеет директива Allow.
Disallow и Allow с пустым значением параметра
Этот случай является частой причиной не верной трактовки правил Disallow и Allow.
Дело в том, что директива
Disallow:
вопреки возможным предположениям наоборот разрешает индексацию всего сайта без ограничений, т.е. эквивалентна указанию
Allow: /
Очень часто её путают с
Disallow: /
которая наоборот запрещает индексацию сайта полностью.
Совершенно аналогично, директива
Allow:
имеет то же значение, что и
Disallow: /
и полностью запрещает индексацию ресурса.