html.okpython.net
HTML и CSS для начинающих

HTML :: Файл robots.txt

Что такое robots.txt

robots.txt - это простой текстовый файл, содержащий инструкции по индексированию сайта для роботов поисковых систем. Располагаться такой файл должен в корневой директории сайта.

Благодаря служебному файлу robots.txt вебмастер может как запретить, так и разрешить полное или частичное сканирование определенных разделов или отдельных страниц на сайте. Запрет на сканирование некоторых страниц может понадобиться, например, когда требуется недопустить появления в поисковой выдаче страниц с личной или служебной информацией, а также похожих или ненужных страниц. К таким страницам можно отнести страницы пользователей в кабинете, страницы регистрации, страницы с учебными примерами и с результатами поиска и т.д. В любом случае, если поисковый робот в результате анализа содержимого файла robots.txt получит инструкцию о запрете сканирования определенной страницы, он пропустит ее и не будет индексировать.

Инструкции данного служебного файла являются всего лишь рекомендациями и подсказками для поисковых роботов, но не командами, обязательными для исполнения. Кроме того, если на страницу будут вести внутренние или внешние ссылки, то есть вероятность, что она все таки будет проиндексирована роботами и возможно появится в поисковой выдаче. Поэтому для более надежной защиты содержимого страницы следует дополнительно использовать метатеги с директивами по индексированию или даже устанавливать парольную защиту для страниц с наиболее важными конфиденциальными данными.

Как создать файл robots.txt

Для того, чтобы создать файл robots.txt, необходимо создать в любом текстовом редакторе пустой файл и сохранить его с именем robots.txt. Во избежание проблем желательно сохранять файл в кодировке UTF-8. После того, как файл будет создан, нужно заполнить его требуемыми директивами и поместить в корневой каталог сайта.

Синтаксис и основные директивы файла robots.txt

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

User-agent - это ключевое слово используется для указания тех поисковых роботов, которым предназначаются дальнейшие инструкции в данном файле robots.txt (см. пример №1).

Все имеющиеся на данный момент поисковые роботы перечислены в специальной базе данных роботов Интернета, которая находится на сайте http://www.robotstxt.org/db.html. Если же нужно разрешить доступ к страницам сайта всем роботам, то вместо имени робота нужно использовать символ звездочки *.

Disallow - это ключевое слово используется тогда, когда нужно запретить доступ поисковым роботам к сайту целиком или же к отдельным его каталогам и страницам (см. пример №1).

Allow - это ключевое слово используется тогда, когда нужно наоборот разрешить доступ поисковым роботам к отдельным его каталогам и страницам (см. пример №1).

Ключевое слово Allow обычно используется в ситуации, когда, например, при помощи Disallow была закрыта какая-нибудь директория на сайте, но при этом необходимо оставить для сканирования какие-то поддиректории или вложенные страницы.

Теперь внимательно ознакомьтесь с примером №1, в нем представлен ряд наиболее часто встречающихся практических ситуаций с использованием описанных выше ключевых слов. Обратите внимание на используемый синтаксис: наличие пробелов, двоеточий, переводов строк, комментариев.

HTML htmlCodes
#---- Пример №1 ------

#Разрешаем всем роботам индексировать сайт
User-agent: *
Disallow:

#---- Пример №2 ------

#Запрещаем всем роботам индексировать сайт
User-agent: *
Disallow: /

#---- Пример №3 ------

#Разрешаем индексировать сайт только 
#роботам Yandex и Googlebot
#Блоки директив отделяем пустой строкой
User-agent: Yandex
User-agent: Googlebot
Disallow:

User-agent: *
Disallow: /

#---- Пример №4 ------

#Запрещаем всем роботам индексировать 
#указанные страницы и каталоги
User-agent: *
Disallow: /catalog_1/registration.html
Disallow: /cabinet/user_data.html
Disallow: /catalog_2/catalog_3/

#---- Пример №5 ------

#Запрещаем всем роботам сканировать страницы 
#в каталоге cabinet, но разрешаем сканирование
#в нем страницы site_news.html
User-agent: *
Disallow: /cabinet/
Allow: /cabinet/site_news.html

Пример №1. Примеры директив в файле robots.txt

Следует отметить, что синтаксис robots.txt подразумевает ряд важных моментов:

  • все, что находится после символа решетки # и до первого перевода строки, роботы будут считать комментарием;
  • роботы игнорируют неизвестные им пробелы и команды;
  • после ключевых слов нужно ставить обязательное двоеточие и необязательный пробел, и только тогда записывать соответствующий параметр, после которого также разрешается ставить необязательные пробелы, т.к. они все равно будут проигнорированы роботами;
  • роботы не чувствительны к регистру ключевых слов, но могут быть чувствительны к регистру их параметров, например, тех же префиксов URL;
  • с каждым отдельным ключевым словом можно использовать только один параметр (например, одно указание имена робота или префикса URL), если же необходимо указать несколько параметров, следует использовать соответствующее ключевое слово несколько раз на разных строках, но не использовать при этом пустых строк для их разделения;
  • а вот перед каждым новым блоком инструкций, который начинается с директивы User-agent, наоборот рекомендуется вставлять пустой перевод строки, т.к. роботы воспринимают пустые строки в качестве разделителя блока директив.

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

HTML htmlCodes
#---- Пример №1 ------

#Код до сортировки роботом
#Здесь длина /cabinet/site_news.html больше,
#чем длина /cabinet/, поэтому страница
#site_news.html будет доступна для сканирования
User-agent: *
Allow: /cabinet/site_news.html
Disallow: /cabinet/

#После сортировки роботом  
#User-agent: *
#Disallow: /cabinet/
#Allow: /cabinet/site_news.html


#---- Пример №2 ------

#Код до сортировки роботом
#Разрешаем сканировать страницы, которые
начинаются с /cabinet, но закрываем доступ
#к страницам в подкаталоге /cabinet/site_news/
User-agent: *
Allow: /cabinet
Disallow: /cabinet/site_news/
Disallow: /

#После сортировки роботом 
#User-agent: *
#Disallow: /
#Allow: /cabinet
#Disallow: /cabinet/site_news/

Пример №2. Нюансы совместного использования директив Allow и Disallow

В случае конфликта директив Disallow и Allow, которые используются в одном блоке User-agent и при этом имеют одинаковую длину префикса URL, роботы отдадут предпочтение директиве Allow.

Использование спецсимволов * и $ в файле robots.txt

В большинстве случаев директив Disallow и Allow вполне достаточно для того, чтобы установить запрет на индексацию роботами нужных страниц сайта. Тем не менее, синтаксис файла robots.txt допускает использование спецсимволов * и $, которые используются в качестве подстановочных знаков и позволяют задавать для префиксов URL простейшие регулярные выражения. Так символ звездочки * заменяет любую последовательность символов, в том числе и пустую, а знак доллара $ обозначает конец текущего префикса URL (далее никаких символов быть не должно). Наиболее важные особенности использования данных подстановочных символов представлены в таблице №3.

Префикс URL Попадают под фильтр Не попадают Комментарии
/ Любой существую­щий URL сайта Любой недействи­тель­ный URL Одиночный слеш / обозначает корневой каталог сайта, поэтому для сканирования будут открыты все URL сайта
/* Любой существую­щий URL сайта Любой недействи­тель­ный URL Тоже самое что и одиночный слеш /, т.к. символ звездочки заменяет любую последовательность символов идущую после слеша
/news /news/minsk/
/news/minsk/1.html
/news.html
/news_2.HTML
/news3.html?day=3
/News/minsk/
/2_news.html
Не забываем про чувствительность роботов к регистру символов в URL (даже в именах каталогов!)
/news* /news/minsk/
/news/minsk/1.html
/news.html
/news_2.HTML
/news3.html?day=3
/News/minsk/
/2_news.html
Тоже самое, что и /news, завершающий подстановочный знак * игнорируется
/news/ /news/2.html
/news/minsk/1.html
/news.html
/News/minsk/
/news
Доступ разрешается ко всем подкаталогам и страницам в указанной папке
news/ /news/2.html
/news/minsk/1.html
/news.html
/News/minsk/
/news
Тоже самое, что и запись /news/
/*.html /news/2.html
/news/minsk/1.html
/index.html?id=4
/
/news.HTML
Обратите внимание, что просто слеш / под фильтр не попадает
/*.html$ /news/2.html
/news/minsk/1.html
/news/2.html/
/news.HTML
/index.html?id=4
Здесь знак доллара указывает на то, что далее адрес не должен содержать никаких символов
/news*.html /news.html
/news/2.html
/news/1.html?id=1
/News/2.html
/news.HTML
Вместо символа звездочки может ничего не использоваться, т.к. он подменяет и пустую последовательность

Таблица №3. Спецсимволы * и $ в файле robots.txt

Как видно из таблицы, возможность использования в синтаксисе всего лишь двух дополнительных подстановочных символов значительно расширяет арсенал вебмастера по составлению шаблонов URL в соответствующих директивах файла robots.txt.

Директива Sitemap файла robots.txt

Как уже говорилось ранее, в настоящее время для описания структуры сайтов обычно используется специальная карта сайта, которая в большинстве случаев представлена в виде файла sitemap.xml. Чтобы роботам было легко отыскать такую карту, в файле robots.txt предусмотрена директива Sitemap, которая в качестве параметра принимает абсолютный путь к файлу sitemap.xml (см. пример №4).

HTML htmlCodes
#---- Пример №1 ------

User-agent: *
Disallow: /cabinet/

#Директива является межсекционной, поэтому
#может располагаться в любом месте файла
Sitemap: https://site.name/sitemap.xml


#---- Пример №2 ------

User-agent: *
Disallow: /cabinet/

#Если карт несколько, указываем все
Sitemap: https://site.name/sitemap_1.xml
Sitemap: https://site.name/sitemap_2.xml

Пример №4. Использование директивы Sitemap

Директива Sitemap является межсекционной (межблочной), поэтому ее можно располагать в любом месте файла robots.txt, даже если она будет расположена внутри блока, который предназначен для другого робота. Однако желательно располагать ее отдельно от любых блоков, разделяя пустой строкой.

Директива Host файла robots.txt

Директива Host используется для указания основного домена сайта, т.е. главного зеркала сайта. Все что нужно, это указать имя основного домена в качестве параметра ключевого слова Host (см. пример №5). И хотя некоторые роботы игнорируют эту директиву, таковых с каждым днем становится все меньше.

HTML htmlCodes
#---- Пример №1 ------

User-agent: *
Disallow: /cabinet/

#Если используется протокол HTTP, то его
#указывать необязательно, но допустимо
Host: html.okpython.net


#---- Пример №2 ------

User-agent: *
Disallow: /cabinet/

#А вот здесь с большой долей вероятности 
#в поиске имя будет начинаться с www 
Host: www.html.okpython.net


#---- Пример №3 ------

User-agent: *
Disallow: /cabinet/

#Если используется протокол HTTPS, то 
#его указывать нужно обязательно
Host: https://html.okpython.net


#---- Пример №4 ------

User-agent: *
Disallow: /cabinet/

#Разрешается указывать и порт  
Host: html.okpython.net:8080


#---- Пример №5 ------

#Будет использована роботом
Host: html.okpython.net

User-agent: *
Disallow: /cabinet/

#2-й раз директива роботом игнорируется  
Host: https://html.okpython.net

Пример №5. Использование директивы Host

Перечислим некоторые нюансы использования директивы Host:

  • если главное зеркало (доменное имя) доступно по протоколу HTTPS, то его нужно указывать обязательно;
  • если используется протокол HTTP, то его разрешается опускать;
  • при необходимости разрешается указывать и номер порта;
  • в качестве параметра директивы разрешается указывать только одно корректное доменное имя, нельзя перечислять несколько имен;
  • если в файле robots.txt используется несколько директив Host, роботы будут использовать только первую из них;
  • директива является межсекционной, поэтому может быть указана в любом месте файла (обычно в конце файла после основных директив).

Опять же, директива Host, как и остальные директивы файла robots.txt, служит ждя поисковых роботов не командой для исполнения, а всего лишь рекомендацией. Тем не менее пренебрегать директивой не стоит, т.к. она учитывается роботами при выборе главного зеркала сайта с высоким приоритетом.

Быстрый переход к другим страницам