Как правильно использовать файл robots.txt
ROBOTS.TXT (robots.txt)
Как и что прописывать в файле robots.txt
Директива Sitemap
Если вы используете описание структуры сайта с помощью файла Sitemap, укажите путь к файлу в качестве параметра директивы Sitemap
(если файлов несколько, укажите все). Пример:
User-agent: Yandex
Allow: /
sitemap: https://example.com/site_structure/my_sitemaps1.xml
sitemap: https://example.com/site_structure/my_sitemaps2.xml
Директива является межсекционной, поэтому будет использоваться роботом вне зависимости от места в файле robots.txt, где она указана.
Робот запомнит путь к файлу, обработает данные и будет использовать результаты при последующем формировании сессий загрузки.
Директивы 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: 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:',
# результат — все разрешается