SEO - Устранение ошибок в robots.txt

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

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

Файл robots.txt должен располагаться строго в корне сайта, он должен быть единственным, число директив (команд) не должно превышать 1024. В соответствии со стандартом перед каждой директивой User-agent рекомендуется вставлять пустой перевод строки. Символ # предназначен для описания комментариев. Все, что находится после этого символа и до первого перевода строки не учитывается.

Типичными ошибками, наблюдаемыми у большинства сайтов являются следующие.

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

Одна из самых распространённых ошибок в robots.txt – перепутанные между собой инструкции. Например:

Disallow: Yandex

Правильно писать вот так:
User-agent: Yandex
Disallow: /

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

Многие владельцы сайтов пытаются поместить все запрещаемые к индексации каталоги в одну инструкцию Disallow.

Disallow: /css/ /cgi-bin/ /images/

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

Disallow: /css/
Disallow: /cgi-bin/
Disallow: /images/

Имя файла содержит заглавные буквы

Файл должен называться robots.txt, а не Robots.txt или ROBOTS.TXT.

Использование файла robot.txt вместо robots.txt

Еще раз – файл должен называться robots.txt.

Пустая строка в user-agent

Так неправильно:
User-agent:
Disallow:
Так правильно:
User-agent: *
Disallow:

Зеркала сайта и URL в директиве Host

Чтобы указать, какой сайт является главным, а какой - зеркалом (дублем), для Google используются 301 редирект и внесение информации в Google Search Console, а для Яндекса - директива host.

С точки зрения поисковых систем http://www.site.ru , http://site.ru , https://www.site.ru и https://site.ru - четыре разных сайта. Несмотря на то что визуально для людей это одно и то же, поисковая система принимает решение самостоятельно, какой сайт отображать в результатах выдачи, а какой - нет. Казалось бы, в чем проблема? Их может быть несколько:

  • поисковик Яндекс принял решение оставить у себя в индексе сайт с www, a Google решил оставить без www;
  • ссылки с других ресурсов, которые имеют влияние на ранжирование, ссылаются на сайт с www, а в индексе поисковика остался сайт без www

Чтобы таких проблем не возникло, на этапе технической оптимизации принудительно сообщаем поисковикам, какой вариант сайта - с www или без, с https или без него - для нас предпочтительнее, и избавляем себя от возможных проблем в дальнейшем.

Итак, для протокола http следует писать без аббревиатуры протокола передачи гипертекста, то есть без http:// и без закрывающего слеша /

Неправильно:
User-agent: Yandex
Disallow: /cgi-bin
Host: http://www.site.ru/

Правильно:
User-agent: Yandex
Disallow: /cgi-bin
Host: www.site.ru

Однако, если ваш сайт с https, то правильно писать вот так:
User-agent: Yandex
Disallow: /cgi-bin
Host:https:// www.site.ru

https://yandex.ru/support/webmaster/controlling-robot/robotstxt.html#host

Директива host Является корректной только для робота Яндекса, межсекционной. Поэтому, желательно, секцию Яндекса описывать после всех других секций.

Использование в Disallow символов подстановки

Иногда хочется написать что-то вроде:
User-agent: *
Disallow: file*.html

для указания все файлов file1.html, file2.html, file3.html и т.д. Это допустимо в Яндекс и Google

https://yandex.ru/support/webmaster/controlling-robot/robotstxt.html#asterisk-dollar

https://support.google.com/webmasters/answer/6062596?hl=ru&ref_topi c=6061961

Более того, Яндекс по умолчанию к концу каждого правила, описанного в файле robots.txt, приписывается спецсимвол *. Пример:ла,

User-agent: Yandex
Disallow: /cgi-bin* # блокирует доступ к страницам
# начинающимся с '/cgi-bin'
Disallow: /cgi-bin # то же самое

Чтобы отменить * на конце правила, можно использовать спецсимвол $, например:
Спецсимвол $ не запрещает указанный * на конце, то есть:

User-agent: Yandex
Disallow: /example$ # запрещает только '/example'
Disallow: /example*$ # так же, как 'Disallow: /example'
# запрещает и /example.html и /example

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

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

ЗАГЛАВНЫЕ БУКВЫ – ЭТО ПЛОХОЙ СТИЛЬ

USER-AGENT: GOOGLEBOT
DISALLOW:

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

User-agent: googlebot
Disallow:

Перечисление всех файлов

User-agent: *
Disallow: /AL/Alabama.html
Disallow: /AL/AR.html
Disallow: /Az/AZ.html
Disallow: /Az/bali.html
Disallow: /Az/bed-breakfast.html

Вместо этого можно просто закрыть от индексации директорию целиком:

User-agent: *
Disallow: /AL/
Disallow: /Az/

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

Некоторые роботы могут неправильно отреагировать на использование дополнительных директив. Это значит, что не стоит использовать дополнительные директивы в секции «*».

То есть рекомендуется создавать специальные секции для нестандартных директив, таких как «Host».

Так неправильно:
User-agent: *
Disallow: /css/
Host: www.example.com

А вот так – правильно:
User-agent: *
Disallow: /css/
User-agent: Yandex
Disallow: /css/
Host: www.example.com

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

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

Так неправильно:
User-agent: Yandex
Host: www.example.com

Так правильно:
User-agent: Yandex
Disallow:
Host: www.example.com

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

Как в этом случае поступит робот?
User-agent: Yandex
Disallow: john

По стандарту, он не будет индексировать файл с именем «john» и директорию с именем «john». Для указания только директории надо писать так:
User-agent: Yandex
Disallow: /john/

Неправильный HTTP-заголовок

Сервер должен возвращать в HTTP-заголовке для robots.txt «ContentType: text/plain» а, например, не «Content-Type: text/html». Неправильный заголовок может привести к тому, что некоторые роботы не обработают файл.

Логические ошибки

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

Для Google: На уровне группы, в частности для директив allow и disallow, самое строгое правило, учитывающее длину записи [путь], будет важнее менее строгого и более короткого правила. Порядок очередности правил с подстановочными знаками не определен.

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


# Исходный robots.txt:
User-agent: Yandex
Allow: /catalog
Disallow: /

# Сортированный robots.txt:
User-agent: Yandex
Disallow: /
Allow: /catalog
# разрешает скачивать только страницы,
# начинающиеся с '/catalog'

# Исходный robots.txt:
User-agent: Yandex
Allow: /
Allow: /catalog/auto
Disallow: /catalog

# Сортированный robots.txt:
User-agent: Yandex
Allow: /
Disallow: /catalog
Allow: /catalog/auto
# запрещает скачивать страницы, начинающиеся с '/catalog',
# но разрешает скачивать страницы, начинающиеся с '/catalog/auto'.

При конфликте между двумя директивами с префиксами одинаковой длины в Яндексе приоритет отдается директиве Allow.

В любом случае протестируйте ваш robots.txt на конфликты в обоих вебмастерах.

Дополнительно проверьте , что вы закрыли от индексации:

  • страницы действий (добавление в корзину, сравнение товаров, перенос в список «Избранное»),
  • корзины с товарами,
  • встроенный поиск на сайте,
  • служебные каталоги с конфиденциальными документами (адреса доставки, контактные телефоны),
  • идентификаторы сессии, utm-метки с помощью директивы «Clean-param» для Яндекса.


Использованные источники:

https://yandex.ru/support/webmaster/controlling-robot/robots-txt.html#asterisk-dollar
https://support.google.com/webmasters/answer/6062596?hl=ru&ref_topic=6061961
https://developers.google.com/search/reference/robots_txt?hl=ru
http://robotstxt.org.ru/robotstxterrors



Copyright 2018 SEO-MOB.ru