Ошибки robots.txt

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

Файл robots.txt располагается в корневом каталоге сайта и доступен по адресу: domain.com/robots.txt.

Почему robots.txt важен для продвижения?

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

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

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

Можно случайно запретить индексирование важных для продвижения страниц, и они не попадут в результаты поиска.

Ниже приведены ссылки на инструкции по использованию файла robots.txt:

Содержание отчета

  1. Кнопка «обновить» - при нажатии на неё данные о наличии ошибок в файле robots.txt обновятся.
  2. Содержимое строк файла robots.txt.
  3. При наличии в какой-либо директиве ошибки Labrika дает её описание.

Ошибки robots.txt, которые определяет Labrika

Сервис находит следующие виды ошибок:

Директива должна отделятся от правила символом ":".

Каждая действительная строка в файле robots.txt должна состоять из имени поля, двоеточия и значения. Использовать пробелы не обязательно, но рекомендуется для удобства чтения. Для добавления комментария применяется символ решётки «#», который ставится перед его началом. Весь текст после символа «#» и до конца строки робот поисковой системы будет игнорировать.

Стандартный формат:

<field>:<value><#optional-comment>

Пример ошибки:

User-agent Googlebot

Пропущен символ “:”.

Правильный вариант:

User-agent: Googlebot

Пустая директива и пустое правило.

Недопустимо делать пустую строку в директиве User-agent. Это основная директива, которая указывает, для какого поискового робота прописаны дальнейшие правила индексации.

Пример ошибки:

User-agent:

Не указан пользовательский агент.

Правильный вариант:

User-agent: название бота 

Например:

User-agent: Googlebot

Каждое правило должно содержать не менее одной директивы «Allow» или «Disallow». Disallow закрывает раздел или страницу от индексации, Allow открывает страницы сайта для индексации (например, разрешает сканирование подкаталога или страницы в закрытом для обработки каталоге). Эти директивы задаются в формате: directive: [path], где значение [path] (путь к странице или разделу) указывать не обязательно. Однако роботы игнорируют директивы Allow и Disallow без указания пути. В этом случае они могут сканировать весь контент. Пустая директива Disallow: равнозначна директиве Allow: /, то есть "не запрещать ничего".

Пример ошибки в директиве Sitemap:

Sitemap:

Не указан путь к карте сайта.

Правильный вариант:

Sitemap: https://www.site.ru/sitemap.xml

Перед правилом нет директивы User-agent

Правило должно всегда стоять после директивы User-agent. Размещение правила перед первым именем пользовательского агента означает, что никакие сканеры не будут ему следовать.

Пример ошибки:

Disallow: /category
User-agent: Googlebot

Правильный вариант:

User-agent: Googlebot
Disallow: /category

Найдено несколько правил вида "User-agent: *"

Запись вида User-agent: * означает, что правило задается для всех поисковых роботов.

Например:

User-agent: *
Disallow: /

запрещает всем поисковым роботам индексирование всего сайта.

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

Пример ошибки:

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

Правильный вариант:

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

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

Обнаружена директива, которая не поддерживается поисковой системой (например, не описана в правилах использования robots.txt Яндекса).

Причины этого могут быть следующие:

  • была прописана несуществующая директива;
  • допущены ошибки синтаксиса, использованы запрещенные символы и теги;
  • эта директива может использоваться роботами других поисковых систем.

Пример ошибки:

Disalow: /catalog

Директивы «Disalow» не существует, допущена ошибка в написании слова.

Правильный вариант:

Disallow: /catalog

Количество правил в файле robots.txt превышает максимально допустимое

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

Например, если вам нужно заблокировать сканирование файлов PDF, не запрещайте каждый отдельный файл. Вместо этого запретите все URL-адреса, содержащие .pdf, с помощью директивы:

Disallow: /*.pdf

Правило превышает допустимую длину

Правило не должно содержать более 1024 символов.

Некорректный формат правила

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

Чтобы поисковые роботы корректно обрабатывали инструкции в файле robots.txt, все правила должны быть написаны согласно стандарту исключений для роботов (REP), который поддерживают Google, Яндекс и большинство известных поисковых машин.

Использование кириллицы и других национальных языков

Использование кириллицы запрещено в файле robots.txt. Согласно утверждённой стандартом системе доменных имен название домена может состоять только из ограниченного набора ASCII-символов (буквы латинского алфавита, цифры от 0 до 9 и дефис). Если домен содержит символы, не относящиеся к ASCII (в том числе буквы национальных алфавитов), его нужно преобразовать с помощью Punycode в допустимый набор символов.

Пример ошибки:

User-agent: Yandex
Sitemap: сайт.рф/sitemap.xml

Правильный вариант:

User-agent: Yandex
Sitemap: https://xn--80aswg.xn--p1ai/sitemap.xml

Возможно, был использован недопустимый символ

Допускается использование спецсимволов «*» и «$». Они применяются для указания шаблонов адресов при объявлении директив, чтобы не прописывать большой перечень конечных URL для блокировки. Например:

Disallow: /*.php$

запрещает индексировать любые php файлы.

  • Звездочка «*» обозначает любую последовательность и любое количество символов.
  • Знак доллара «$» означает конец адреса и ограничивает действие знака «*».

Например, если /*.php соответствует всем путям, которые содержат .php., то /*.php$ соответствует только тем путям, которые заканчиваются на .php.

Символ «$» прописан в середине значения

Знак "$" можно использовать только один раз и только в конце правила. Он показывает, что стоящий перед ним символ должен быть последним.

Пример ошибки:

Allow: /file$html

Правильный вариант:

Allow: /file.html$

Правило начинается не с символа "/" и не с символа "*".

Правило может начинаться только с символов «/» и «*».

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

Пример ошибки:

Disallow: products

Правильным вариантом будет:

Disallow: /products

или

Disallow: *products

в зависимости от того, что вы хотите исключить из индексации.

Некорректный формат URL файла Sitemap

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

В качестве URL файла Sitemap должен быть указан полный адрес, который содержит обозначение протокола (http:// или https://), имя сайта, путь к файлу, а также имя файла.

Пример ошибки:

Sitemap: /sitemap.xml

Правильный вариант:

Sitemap: https://www.site.ru/sitemap.xml

Некорректное имя главного зеркала сайта

Директива Host указывала роботу Яндекса главное зеркало сайта, если к веб-ресурсу был доступ по нескольким доменам. Остальные поисковые роботы её не воспринимали.

Директива Host могла содержать только протокол (необязательный) и домен сайта. Прописывался протокол https, если он использовался. Указывалась только одна директива Host. Если их было несколько, робот учитывал первую.

Пример ошибки:

User-agent: Yandex
Host: http://www.example.com/catalog
Host: https://example.com

Правильный вариант:

User-agent: Yandex
Host: https://example.com

С марта 2018 года Яндекс отказался от директивы Host. Вместо неё используется раздел «Переезд сайта» в Вебмастере и 301 редирект.

Некорректный формат директивы «Crawl-delay»

Директива Crawl-delay задает роботу минимальный период времени между окончанием загрузки одной страницы и началом загрузки следующей.

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

При указании интервала можно использовать как целые значения, так и дробные. В качестве разделителя применяется точка. Единица измерения – секунды:

К ошибкам относят:

  • несколько директив Crawl-delay;
  • некорректный формат директивы Crawl-delay.

Пример ошибки:

Crawl-delay: 0,5 second

Правильный вариант:

Crawl-delay: 0.5

С 22 февраля 2018 года Яндекс перестал учитывать директиву Crawl-delay. Чтобы задать скорость, с которой роботы будут загружать страницы сайта, используйте раздел «Скорость обхода сайта» в Яндекс.Вебмастере.

Google также не поддерживает эту директиву. Для Google-бота установить частоту обращений можно в панели вебмастера Search Console. Однако роботы Bing и Yahoo соблюдает директиву Crawl-delay.

Некорректный формат директивы «Clean-param»

Директива используется только для робота Яндекса. Google и другие роботы не поддерживают Clean-param.

Директива указывает, что URL страниц содержат GET-параметры, которые не влияют на содержимое, и поэтому их не нужно учитывать при индексировании. Робот Яндекса, следуя инструкциям Clean-param, не будет обходить страницы с динамическими параметрами, которые полностью дублируют контент основных страниц.

Labrika определяет некорректный формат директивы Clean-param, например:

В именах GET-параметров встречается два или более знака амперсанд "&" подряд:

Clean-param: sort&&session /category

Правильный вариант:

Clean-param: sort&session /category

Правило должно соответствовать виду "p0[&p1&p2&..&pn] [path]". В первом поле через символ «&» перечисляются параметры, которые роботу не нужно учитывать. Во втором поле указывается префикс пути страниц, для которых применяется правило. Параметры отделяются от префикса пути пробелом.

Имена GET-параметров должны содержать только буквы латинского алфавита, цифры, нижнее подчеркивание и дефис.

Префикс PATH URL для директивы Clean-param может включать только буквы латинского алфавита, цифры и некоторые символы: ".", "-", "/", "*", "_".

Ошибкой считается и превышение допустимой длины правила — 500 символов.

Строка содержит BOM (Byte Order Mark) — символ U+FEFF

BOM (Byte Order Mark - маркер последовательности байтов) — символ вида U+FEFF, который находится в самом начале текста. Этот Юникод-символ используется для определения последовательности байтов при считывании информации.

При создании и редактировании файла с помощью стандартных программ редакторы могут автоматически присвоить ему кодировку UTF-8 с BOM меткой.

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

При использовании маркера последовательности байтов в файлах .html сбиваются настройки дизайна, сдвигаются блоки, могут появляться нечитаемые наборы символов, поэтому рекомендуется удалять маркер из веб-скриптов и CSS-файлов.

Как избавиться от BOM меток?

Избавиться от ВОМ довольно сложно. Один из простых способов это сделать - открыть файл в редакторе, который может изменять кодировку документа, и пересохранить его с кодировкой UTF-8 без BOM.

Например, вы можете бесплатно скачать редактор Notepad++, открыть в нём файл с ВОМ меткой и выбрать во вкладке меню «Кодировки» пункт «Кодировать в UTF-8 (без BOM)».