Найти тему

Файл robots.txt: зачем нужен, частые ошибки и всё, что нужно о нём знать

Оглавление

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

Краткая справка

Файл robots.txt – это свод правил для поисковых роботов. «Туда не ходи, сюда ходи» и всё такое. Здесь нужно перечислить весь контент, который вы хотите скрыть от роботов. И большинство поисковиков выполняет требования файла. Но не все. И нет, Google не среди непослушных. Также в этом файле можно объяснить некоторым ботам, как именно можно краулить разрешённый контент. А вот это для Google уже не будет руководством к действию.

Как выглядит файл

Общая схема такова:

Выглядит пугающе и непонятно, если вы ещё никогда не работали с такими файлами. Но синтаксис здесь на самом деле простой. Вы называете робота, к которому обращаетесь, и предъявляете ему список команд-директив. Как зовут роботов и что им приказывать, разберёмся дальше.

Имена агентов

Вы можете дать разные разрешения отдельным поисковикам. Для этого нужно знать, как обращаться к роботам каждой системы. Вот самые полезные из имён:

  • Яндекс – Yandex.
  • Google – Googlebot.
  • Google Images – Googlebot-Image.
  • Mail.ru – Mail.ru.
  • Bing – Bingbot.
  • Yahoo – Slurp.
  • Baidu – Baiduspider.
  • DuckDuckGo – DuckDuckBot.

Учтите, что имена нужно вводить именно так, как они здесь написаны, с дефисами и разным регистром.

Если вы хотите дать команду всем ботам, то вместо имени введите *. А если открыть доступ только Google, можно запретить краулинг всем роботам, кроме гугл-бота. Это выглядит так:

-2

Боты выполняют наиболее конкретные команды, поэтому первую гугл-бот проигнорирует и спокойно будет сканировать сайт по разрешению второй директивы.

Вообще вы можете добавить сколько угодно индивидуальных директив и обратиться к бесконечному числу агентов. Но если вы так делаете, помните, что тогда робот-паук считывает только то, что обращено к нему. И для каждого бота вам нужно будет ввести весь список команд. Команды для второго робота первому не указ. Но если вы ввели две и больше директивы под одним именем, то всё нормально.

Директивы

Какие же приказы роботы поймут? Посмотрим на примере робота Google.

Disallow

Это «кирпич», выставленный на пути бота к какой-то странице. Если вы не хотите, чтобы в поиске были страницы вашего блога, вставьте такой код:

-3

Здесь нужно внимательно следить за адресом страницы. Если там будет опечатка, или вы забудете вставить в строчку сам адрес, боты просто проигнорируют эту директиву. 

Allow

Продолжаем историю с блогом. Вы написали мегаполезную статью и хотите поделиться ею со всем миром. Но поисковики её не увидят. Она же в закрытой части сайта. Надо открыть. Используем директиву:

-4

Теперь робот увидит вашу статью, но остальной блог останется для него закрытым. Здесь тоже следите, правильно ли написан адрес.

Конфликты директив

Прервём список для важного уточнения. Иногда директивы из-за ошибки противоречат друг другу. Вот так, например:

-5

Роботу одновременно разрешают и запрещают просматривать блог. Как разрешить противоречие? Google и Bing выбирают ту, в которой больше символов. То есть здесь они не пойдут в блог, потому что в запрете на один символ больше. А если бы команды были одинаковы по длине, тогда выбор этих систем пал на тот вариант, который даёт просмотреть больше страниц. То есть разрешительный. Другие роботы поступают по-другому: они принимают первую директиву, игнорируя другие.

Sitemap

Директива от адреса, где список со страницами лежит. Это те страницы, которые поисковик может просматривать и индексировать. Директива выглядит так:;

-6

Она не относится к какому-то боту, а по умолчанию указывает путь всем. Поэтому её лучше включать в начале или конце robots.txt.

Эти три директивы, кроме Google, поддерживают так же Яндекс, Bing и большинство поисковиков.

Crawl-delay

А вот эту Google больше не поддерживает. Хотя Яндекс и Bing оставили её в списке используемых. Этой директивой можно задать количество секунд, которое должно пройти между загрузкой страниц. Паузы помогут снизить нагрузку на ваш сервер. Если вы зададите промежуток в 5 секунд, тогда за сутки бот проверит 17280 страниц. Если у вас их больше, стоит уменьшить паузу. 

Noindex

Google отрицает, что эта директива когда-либо существовала, а 1 сентября 2019 года окончательно поставила точку, официально заявив, что noindex не поддерживается. Если хотите закрыть что-то от индексации, используйте другие способы: мета-теги для роботов или специальные заголовки. 

Nofollow

Тоже никогда не имела официальной поддержки Google и от неё тоже отказались 1 сентября. Теперь запретить роботам переходить по ссылкам на странице только тегами и http-заголовками. 

Clean-param

А это директива Яндекса. Её используют, чтобы очистить адрес страницы от идентификаторов сессий или пользователей, а также меток, которые не влияют на содержимое сайта.

Кириллица в robots.txt

Ещё одно отступление. В файл нельзя вставлять текст, написанный русскими буквами. Его нужно перевести в кодировку структуры вашего сайта.

А вам точно нужен robots.txt?

В принципе, небольшим сайтам не обязательно иметь этот файл. Но с ним лучше, чем без него. Благодаря ему, вы лучше контролируете, что поисковики могут и не могут делать на вашем сайте. То есть вы можете быть уверены, что:

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

Но с другой стороны, запреты на индексацию в robots.txt не дают 100%-ной гарантии, что закрытая страница не засветится в поиске. Например, если на эту страницу ведут ссылки с других сайтов, она может раскрыться в выдаче.

Работаем с файлом

Где найти robots.txt

Если на вашем сайте уже есть этот файл, значит, он лежит по адресу site-name.ru/robots.txt.

Делаем с нуля

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

Куда загрузить файл

На тот сайт, который вы имели в виду, когда прописывали все правила. Если это site-name.ru, то грузите прямо в корень, чтобы потом найти файл по адресу site-name.ru/robots.txt. А если blog.site-name.ru, то blog.site-name.ru/robots.txt.

Полезные советы 

С общими правилами мы разобрались. Надеемся, вам стало понятнее, как работать с robots.txt. Перейдём к практическим советам.

Новая директива – новая строка

Если не разделять правила, робот может их не считать. Кроме того, когда всё написано в одну строчку, легче пропустить ошибку. 

Используйте * для упрощения инструкций

Знак * можно использовать не только для обращения ко всем роботам, но и для сокращения адресов в командах. Например, вы не хотите, чтобы боты заходили на товарные страницы категорий с настроенными параметрами. Можно прописать адреса всех этих страниц. 

-7

Или заменить их одной строчкой и запретить краулинг всех страниц в products, которые заканчиваются вопросительным знаком. То есть все, в которых пользователь что-то настраивал.

-8

Также можно полностью блокировать путь в любую категорию на сайте, если вам это нужно. 

Ставьте $ в конце адреса

Чтобы показать боту, где заканчивается нужный URL, используйте знак доллара. Для примера: если вам нужно запретить ботам просматривать ваши pdf-ки, в вашем robots.txt должна быть такая строчка:

-9

Это перекроет путь ко всем страницам, чей адрес заканчивается на .pdf, но не к тем, у которых в конце стоит что-то типа /file.pdf?id=1234455665.

Обращайтесь к каждому агенту только раз

Это не правило, а именно совет. Google считает команды правильно и в таком виде: 

-10

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

-11

Конкретизируйте

Общие инструкции могут привести к катастрофическим последствиям. Представьте, что вы ведёте сайт на двух языках – русском и английском. Но вторая часть ещё не до конца готова, но уже размещена на ресурсе. Вы каждый день что-то дополняете и меняете. И вам не нужно, чтобы поисковые роботы постоянно это индексировали. Английская версия сайта доступна по адресу site-name.ru/en. Вы прописываете в robots.txt:

-12

Робот не заходит в английскую версию, но заодно и на другие сайты:

/entrycode/enablenotifications/envydwarf/enoughofthiskerfuffle.pdf

Чтобы этого избежать, добавьте в код после en слэш.

-13

Добавьте в robots.txt комментарии для людей

Да, файл называется «роботы». И да, мы там прописываем инструкции для роботов. Но люди их тоже читают. Оставьте комментарии для других разработчиков или же себя в будущем. Начинайте предложение с #, тогда роботы не будут читать этот комментарий. 

-14

Каждому поддомену – отдельный файл

Роботы выполняют инструкции только на том домене, куда загружен файл. Если у вас есть хотя бы один поддомен, например, blog.site-name.ru, значит, для него нужно делать отдельный robots.txt, итого два файла. Два поддомена – три файла и так далее. Каждый нужно выложить на своём поддомене. 

Примеры файлов robots.txt

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

Свободный доступ для всех ботов

User-agent: *Disallow:

Если вы не добавите сюда адрес, для ботов это будет значить, что ни у одной страницы нет запрета на краулинг. То есть вы дадите им доступ ко всем адресам на сайте.

Общий запрет

User-agent: *Disallow: /

Обратная ситуация. Доступ к любой странице перекрыт директивой.

Перекрытие доступа к одному разделу

User-agent: *Disallow: /folder/

Вместо folder пишем название вашего раздела.

Разрешить доступ к одному файлу из закрытой папки

User-agent: *Disallow: /folder/Allow: /folder/page.html

Тоже кастомизируем адреса под себя.

Скрываем любой файл

User-agent: *Disallow: /file.pdf

Запрет доступа к определённому формату файлов. На примере pdf.

User-agent: *Disallow: /*.pdf$

Перекрыть доступ одного бота к страницам с пользовательскими параметрами

User-agent: GooglebotDisallow: /*?

На месте Googlebot может быть любой другой агент.

Как проверить robots.txt на ошибки

Если вам важна видимость в Google, используйте его инструменты. В Яндексе они все объединены в Вебмастере. Итак, разберём ошибки на примере Google. Провести аудит можно через сервис Search Console. Вам нужен отчёт о доступности. Что вы можете там обнаружить?

Адрес заблокирован robots.txt

Это значит, что хотя бы один из адресов в вашей карте сайта недоступен из-за директивы в robots.txt. В карте не должно быть ни одной страницы, которую вы не хотите индексировать и на которой работает редирект. Если у вас отображается эта ошибка, значит, в карту просочилось что-то запрещённое. Как найти, какая именно страница недоступна ботам? Перейдите в тестер robots.txt, там запрещающая директива будет видна. И исправьте ошибку: либо уберите ссылку на эту страницу из карты сайта, или разрешите к ней доступ.

Заблокировано robots.txt

Эта ошибка говорит о том, что бот не может проиндексировать какой-то контент. Если вам нужно, чтобы Google всё-таки его проиндексировал, откройте закрытый в robots.txt доступ. И убедитесь, что на контенте не висит тег noindex. А если контент должен остаться невидимым для поисковика, то всё равно уберите блок на краулинг, а контент перекройте тегами или http-заголовком. Тогда Google увидит запрет на индексацию и точно выполнит это требование.

Проиндексировано, но заблокировано robots.txt

Это значит, что Google проиндексировал часть закрытого контента. То есть вы попытались перекрыть доступ через robots.txt, но у вас не получилось. Google не видит запрет на индексацию, если доступ к странице закрыт. Решение такое же, как и в прошлом случае.

И ещё немного полезной информации:

  • Максимальный размер robots.txt – около 500 кб.
  • Где найти robots.txt в WordPress? Там же, где и у остальных: site-name.ru/robots.txt. Редактировать его можно через специальные плагины.
  • Файл robots.txt Битрикс доступен для редактирования в админ панели в разделе Маркетинг - Поисковая оптимизация - Настройка robots.txt
-15