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, в нем представлен ряд наиболее часто встречающихся практических ситуаций с использованием описанных выше ключевых слов. Обратите внимание на используемый синтаксис: наличие пробелов, двоеточий, переводов строк, комментариев.
#---- Пример №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).
#---- Пример №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).
#---- Пример №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). И хотя некоторые роботы игнорируют эту директиву, таковых с каждым днем становится все меньше.
#---- Пример №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, служит ждя поисковых роботов не командой для исполнения, а всего лишь рекомендацией. Тем не менее пренебрегать директивой не стоит, т.к. она учитывается роботами при выборе главного зеркала сайта с высоким приоритетом.
Быстрый переход к другим страницам
- Карта сайта
- Служебный файл robots.txt
- Вернуться к оглавлению учебника