Настройка правильного файла robots.txt

Если вы читаете эту статью - у вас проблема в написании правильного robots.txt. Возможно вы знакомы с основами, видели несколько таких инструкцией для поисковых устройств, знаете принцип составления или же вовсе имеете богатый опыт составления этого файла. Прочитать статью будет полезно и интересно всем. Сегодня мы рассмотрим правила, ошибки и "хороший тон" составления правильного robots, а так же его коррекцию при использовании популярных CMS. Речь не пойдет об основах. Все элементарные правила создания и корректировки роботс должен знать каждый. А если вы не знаете их, то вам прямая дорога сначала в Помощь Яндекса, где подробно прочитаете как создать robots.txt. 

Итак, поехали!


Роботов можно разделить на два отряда: "пауки" и "дятлы".

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

Ниже я опишу банальные ошибки настройки robots.txt которые сам видел и расскажу как их можно избежать.


Ошибки составления robots.txt для сайта, которые мы встречали

Перепутанные инструкции

Я имел честь видел на своем опыте много файлов роботс, но бывали и совсем фантастические и невозможные. К примеру:

User-agent: /
 Disallow: Yandex 

Всем же, надеюсь, известно что правильно писать так:

User-agent: Yandex
 Disallow: / 

Указание нескольких правил в одной инструкции

Так же мне улыбнулась удача увидеть в своей жизни данное безобразие:

Disallow: /wp-admin/ /wp-includes/ /wp-feed/ 

В таком случае не понятно как поведет себя тот или иной робот поисковой системы. Один может воспринять данное правило вместе - Disallow: /wp-admin/wp-includes/wp-feed/ , другой взять первое правило (/wp-admin/) или последнее (/wp-feed/), а какой то вовсе не воспримет данную строку. Поэтому не рискуем и пишем правила построчно, в отдельных инструкциях:

Disallow: /wp-admin/
 Disallow: /wp-includes/
 Disallow: /wp-feed/

Ошибки в названии файла

Так же на моем веку встречались и совсем экзотичные случаи. Захотел я посмотреть роботс сайта, ввел в строку http://сайт.ru/robots.txt, а мне в ответ кукиш! "Наверное нет файла" - подумал я. Но когда залез в структуру сайта был шокирован! Встречались разные варианты написания:

  • Robots.txt (с заглавной буквы);
  • robot.txt (без s);
  • ROBOTS.TXT (!КАПСОМ!).

Правильно писать естественно "robots.txt".

Пустое значение в User-agent

Очень часто на недоработанных сайтах встречалась следующая конструкция:

User-agent:
 Disallow: 

Для кого она? Не понятно. Единственное из этого понятно, что данный посыл не дошел ни до одного робота. Правильно вписывать имя робота, для кого назначены ниже перечисленные инструкции:

User-agent: Googlebot
 Disallow: 

Взаимодействия инструкций Disallow и Allow

Очень часто вижу ошибочное написание разрешающих и запрещающих инструкций:

User-agent: Yandex
 Disallow: /admin/
 Disallow: /tools/
 Allow: /kartinki/ 

Сначала, сразу же после User-agent должны быть правила разрешающие проход роботу, а уже после всех инструкций Allow должны следовать Disallow:

User-agent: Yandex
 Allow: /kartinki/
 Disallow: /admin/
 Disallow: /tools/ 

Требование к составлению директивы Host

Некоторые копируют URL сайта и бессовестно, не глядя, вставляют его в директиву Host вместе с http:

Host: http://studiof1.ru/ 

Серьезная ошибка! Указывать протокол HTTP не нужно . А вот защищенный протокол HTTPS в robots.txt необходим, т.к. показывает роботу как правильно нужно позиционировать ресурс:

Host: https://askusers.ru 

Так же не стоит запихивать в роботс.тхт несколько директив Host. Он всё равно прочитает и воспримет только первую. Так что размещаем Host в секции Yandex после всех правил:

User-agent: Yandex
 Disallow: /admin/
 Disallow: /tools/
 Disallow: /poslednee-pravilo/
 Host: studiof1.ru

Запомните: директивы файла robots.txt, которые неправильно составлены - игнорируются! Например:

  • Host: www.-вашресурс.ru
  • Host: www.вашресурс-.ru
  • Host: www.вашресурс.ru:100000
  • Host: www.ваш_ресурс.ru
  • Host: .ваш-ресурс.ru:8000
  • Host: ваш..ресурс.ru
  • Host: ваш-ресурс.ru.
  • Host: 215.160.195.128
  • Host: www.вашресурс.ru:8080/
  • Host: www.первыйресурс.ru www.второйресурс.ru
  • Host: www.первыйресурс.ru,www.второйресурс.ru


Хороший тон создания файла robots.txt

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

Комментарий на одной строчке с правилами и инструкциями

Вообще такая запись возможна, но не желательна:

Disallow: /admin/ #запрещаем роботам индексировать каталог admin 

Раньше некоторые системы не понимали таких строк. Сейчас, я думаю, поисковики адаптировались ко многим неприятностям, которые вытворяют веб-мастера, но лучше не рисковать и писать комментарий на новой строке.

Редирект страницы на 404-ю ошибку:

Бывают ситуации, при разработке свежего проекта, программист забывает про файл robots и при обращении "паука" к сайту, а это непременно произойдет без этого файла, ресурс переадресует его на другую страницу. Бывает что такой своеобразный редирект происходит без отдачи 404 Not Found. Чтобы этого избежать, советую положить в корень сайта правильный файл robots.txt. А ещё желательно не полениться и написать в нем:

User-agent: *
 Disallow: 

Это открытый роботс.тхт. Если нужно закрыть сайт от индексации на момент разработки или сложившихся ситуаций, то естественно применяем:

User-agent: *
 Disallow: / 

Заглавные буквы в инструкциях


USER-AGENT: YANDEX
 DISALLOW: /ADMIN/ 

Тут без комментариев. Просто будьте людьми! Пишите правильно:

User-agent: Yandex
 Disallow: /admin/ 

Перечисление всех файлов одного каталога

Встречал иногда, когда делал оптимизацию, примерно следующую конструкцию:

User-agent: Yandex
 Disallow: /admin/backup/
 Disallow: /admin/cache/
 Disallow: /admin/components/
 Disallow: /admin/modules/
 Disallow: /admin/themes/
 Disallow: /admin/wizards/ 

И таким образом прошлый программист закрыл все папки вложенности Admin. Хотя было достаточно написать просто:

User-agent: Yandex
 Disallow: /admin/ 

Если уж нужно открыть какие то каталоги внутри закрываемой папки, то таким методом:

User-agent: Yandex
 Allow: /admin/css/
 Allow: /admin/images/
 Disallow: /admin/ 

Написание дополнительных директив в секции

Некоторое время в нашей компании велись споры: где располагать директиву Host? В какой секции: в общей или после всех правил в конце файла? Наши сотрудники ходили на квалифицированные курсы в Unibrains, Топ Эксперт и т.д., приносили разные знания и видения этого вопроса. Такое чувство, что никто не знал как составить robots.txt и где правильнее написать эту директиву. На самом деле некоторые роботы могут неверно отреагировать на использование дополнительных директив, а это значит, что не стоит писать их в секции * - (для всех). Пишите Host в секции для робота Яндекса:

User-agent: Yandex
 Disallow: /admin/
 Host: studiof1.ru
 User-agent: *
 Disallow: /admin/ 

Отсутствие инструкции Disallow

Данная инструкция является обязательной и из-за её отсутствия робот может неправильно понять вас понять.

User-agent: Yandex
 Host: studiof1.ru 

Пишем правильно:

User-agent: Yandex
 Disallow: /wp-admin/
 Host: studiof1.ru 

Отсутствие слешей при указании директории

Я провел эксперимент, чтобы показать, что отсутствие слешей в инструкции воспринимается роботом как ошибка. отсутствия слешей в robots

Если хотим что то закрыть, пишем правило только со слешами!

User-agent: Yandex
 Disallow: /blog/ 

Как и где прописать секцию Sitemap в robots

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

User-agent: * ...
 Disallow: /poslednee-pravilo/
 Sitemap: http://mysite.ru/sitemap.xml


Возможности robots.txt которые многие не используют

В этом пункте мы рассмотрим фишки и дополнительные команды для файла robots.txt, которые мало используют веб-мастера, оптимизаторы и программисты. Я не буду здесь разжевывать возможности Crawl-delay, Clean-param и других директив и правил, которые итак есть в help.yandex.

Взаимодействие обычных страниц и страниц для Google AdWords

Если вы хотите повесить на некоторые свои страницы интернет рекламу от Google, но не хотите чтобы эти страницы были в индексе Google, следует использовать агент Mediapartners-Google. Для этого блокируем страницы в для Google и открываем их (или весь сайт) для рекламы:

User-agent: Googlebot
 Disallow: /admin/
 Disallow: /search/
 Disallow: /reklamnaya-stranica/
 User-agent: Mediapartners-Google
 Allow: /reklamnaya-stranica/ 

Но помним, что секция Mediapartners-Google должна находится после всех агентов включая "*" - для всех. Иначе получится что сначала вы разрешите боту пройти по данным страницам, а потом запретите и в итоге он ничего не сделает.

Взаимодействие обычных страниц и страниц для Яндекс Директа

Тоже самое что и с Google AdWords. Закрываем не нужное и открываем нужное для рекламы в агенте YaDirectBot:

User-agent: *
 Disallow: /admin/
 Disallow: /search/
 Disallow: /reklamnaya-stranica/
 User-agent: YaDirectBot
 Allow: /reklamnaya-stranica/ 

Опять же не забываем размещать эту секцию ниже всех! Можно размещать YaDirectBot и Mediapartners-Google вместе снизу, перед инструкцией для Sitemap.

Открываем изображения для индексации в Яндекс Картинках и Google Images

Для того, чтобы ваши картинки на сайте попали в базы изображений Яндекса и Google, прописываем следующие агенты:

User-agent: Googlebot-Image
 Allow: /themes/images/
 User-agent: YandexImages
 Allow: /themes/images/

Не забываем прописывать правильный атрибут alt на изображениях для того, чтобы можно было найти ваши картинки в поиске.

Закрыть от индексации часть текста

Для начала хочу обратить внимание, что этот метод работает только в Яндексе и Рамблере! Гуглу этот тег до лампочки! Noindex - тег, который закрывает необходимую часть контента от индексации роботом. Он аналогичен мета-тегу noindex, но призван использоваться только в тексте. Обычно им закрывают от индексации счетчики.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus convallis viverra diam sed pretium. Nam ut orci ut arcu ornare pretium ut a diam. Nunc ac tempus augue. Morbi in molestie massa. In hac habitasse platea dictumst. In quis maximus libero. Ut varius dolor et justo hendrerit mollis. Vivamus at semper mi, et hendrerit lacus. Pellentesque quis mollis felis. Etiam eu hendrerit libero.  

Тег noindex не валиден и при проверке валидатором отдает ошибку.Для того, чтобы он проходил проверку маскируем его под комментарий ... . Такой метод работает! фишки роботс
дмитрий семенов

Дмитрий Семенов

lockki.ru, независимый эксперт

Так или иначе, robots.txt нужно составлять по правилам. Для ускорения составления robots.txt я подготовил сборку файлов для 22 популярных CMS, которые просто надо чуть-чуть переделать под свой сайт.

10 правил составления файла robots.txt от Дмитрия

  1. Файл должен называться robots.txt и никак иначе. 
  2. Лежать он должен в корне сайта, т.е. vashsite.ru/robots.txt 
  3. Закрывайте все технические разделы: плагины, админку и т.п. 
  4. Правила пишутся отдельно для каждого робота ,т.е. в директиве User Agent только 1 робот и никаких перечислений. 
  5. Если хотите назначить правила для всех роботов, то User-agent: * 
  6. Host пишется только один раз и только для Яндекса, это User-agent: Yandex 
  7. 1 директива = 1 значение, т.е. Disallow: /admin, и никаких Disallow: /admin /manage и т.п. в одной строчке. 
  8. Disallow блокирует доступ, Allow разрешает доступ. 
  9. Не закрывайте картинки от индексации. 
  10. Закрывайте дубликаты основных страниц, которые формируются вашей CMS. 

виталий кравченко

Виталий Кравченко

Руководитель агентства Webline Promotion, опытный оптимизатор и интернет-маркетолог, любитель экспериментов и опытов



На что нужно обратить внимание при составлении файла robots.txt

На мой взгляд, одна из самых распространенных ошибок - это то, что многие начинающие оптимизаторы воспринимают файл Robots.txt как правило для поисковых роботов, а на самом деле данный файл является всего лишь рекомендацией. В первую очередь, конечно, необходимо иметь четкое представление структуры – тогда правильно создать файл robots.txt будет гораздо проще. Тыкая пальцем в небо можно как приобрести множество проблем с индексацией, так и избавить сайт от возможности улучшения показателей в главзах поисковых систем. Если сайт уже не молодой и стабильно сидит в индексе поисковых систем – при составлении файла обязательно проанализировать индексируемые страницы. Если нет – нужно обозначить приватные и системные страницы и файлы, которые необходимо закрыть. Ну и конечно важно проверять, действительно ли так воспринимает ваш файл поисковая система или нет. Очень часто человеческий фактор или отсутствие необходимых знаний очень негативно сказывается на процессе продвижения. Если вы курируете работу начинающего оптимизатора – нужно всегда проверять что сделано в этом файле до его публикации.

Из своего опыта могу отметить некий алгоритм:

  1. Определяем статические функциональные страницы (админ-панель, корзины, страницы входа, страница напоминания пароля и.т.п.) – формируем список. 
  2. Определяем динамические и типовые мусорные страницы (страницы печати, страницы сравнения, непродвигаемые наборы фильтров и.т.п.). 
  3. Определяем папки с файлами и изображениями, которые не должны индексироваться. 
  4. Формируем файл Robots.txt 
При правильной подготовке данного файла вы получаете хорошую индексацию, правильное восприятие сайта роботами, правильное распределение веса и, конечно же, при дальнейших работах позиции и трафик на нужные нам страницы.

Понравилось? Репост!
Фрактальный краб
А где правила с $ (доллар тобишь)? Crawl-delay и Clean-param тоже не вижу. Вообще, есть номальный мануал на русском: https://help.yandex.ru/webmaster/controlling-robot/robots-txt.xml
Леха
Здравствуйте! Спасибо за интересную статью! Подскажите пожалуйста, как правильно нужно прописать строчку для закрытия, закрыть нужно все линки редиректа по типу: http://site.ru/shop/avito http://site.ru/shop/euroset То есть все что после “shop”, всключая сам “shop”, нужно закрыть от робота. Какая из этих строчек будет правильная? Disallow: /shop Disallow: /shop/ Disallow: /shop/* И если можно, объясните пожалуйста разницу между Disallow: /shop и Disallow: /shop/ в чем отличие. (Прочел справку, к сожалению больше запутался чем разобрался)
seoonly.ru
Спасибо, пост в закладках
magicdimon
Подскажите как закрыть страницы такого вида: /iphone/4s/remont4s-2.html /iphone/4s/remont4s-3.html
Вячеслав Черкашин
Приветствую! Спасибо автору за статью. Однако не могу согласиться с некоторыми тезисами. Кое-что из описанного автором либо миф, либо простое суеверие. Например, автор категорически утверждает, что последовательность директив Disallow и Allow имеет значение. Тогда как в хелпах Яндекса явно указано, что нет. Цитата из хелпов по файлу robots.txt: “Директивы Allow и Disallow из соответствующего User-agent блока сортируются по длине префикса URL (от меньшего к большему) и применяются последовательно. Если для данной страницы сайта подходит несколько директив, то робот выбирает последнюю в порядке появления в сортированном списке. Таким образом, порядок следования директив в файле robots.txt не влияет на использование их роботом.” Обратите внимание на последнее предложение цитаты. Это означает, что порядок следования директив зависит вовсе не от последовательности разрешающих и запрещающих директив. Далее, автор утверждает, что порядок следования секций важен для робота. Это тоже не верное утверждение. Цитата из хелпов Яндекса: “В файле robots.txt робот проверяет наличие записей, начинающихся с User-agent:, в них учитываются подстроки Yandex (регистр значения не имеет) или * . Если обнаружена строка User-agent: Yandex, директивы для User-agent: * не учитываются. Если строки User-agent: Yandex и User-agent: * отсутствуют, считается, что доступ роботу не ограничен.” Это означает, что если вы адресуете одну секцию конкретному роботу, то все другие секции этот робот будет игнорировать. Поэтому невозможна описанная ситуация “сначала вы разрешите боту пройти по данным страницам, а потом запретите и в итоге он ничего не сделает”. Кстати, в приведенной выше цитате из Яндекса указано, что “регистр значения не имеет”, а значит, даже если напишите имя робота не “Yandex”, а “YANDEX”, робот все равно распознает свою секцию корректно. Другое дело, что писать как попало это моветон. Конечно, ни одно из приведенных заблуждений не является критической ошибкой, а всего лишь пополнение коллекции “Мифы и легенды SEO”. И последнее, если вы указываете, что правильное имя файла начинается не с заглавной буквы, то уж в дополнении к статье от “любителя экспериментов и опытов” имя этого файла должно быть указано правильно. Учите мат-часть, автор. Иначе ваш титул независимого эксперта будет иметь двоякое значение. С уважением, Вячеслав Черкашин
Archi
Для новичков будет полезно) Спасибо так же Дмитрию Семенову за подборку. Это облегчит труд, и в подробности особо вдаваться не придется.
Гена
Были вопросы по роботс, а все оказалось куда проще чем я думал. Спасибо за статью!
ГудРич
Разжевали все максимально детально, мои вопросы походу статьи отпадали один за одним. Спасибо, Максим!
Денис
Действительно отличная статья. Все разложили по полочкам. И не так тяжело,как я думал. Спасибо за качественный материал. Вопросов больше не имею =) отдельное спасибо Дмитрию Семенову за предоставленный список роботов по умолчанию. Полезно и экономит время!
Ассоль
Статья очень понравилась. Легко и доступно написано. Ошибки случаются у всех, но от некоторых волосы дыбом встают. Но без них не было бы данной подборки, поэтому, возможно, смогли немного изменить будущее начинающих оптимизаторов.