Файл Robots.txt
Robots.txt - служебный файл, который находится в корневом каталоге сайта и содержит набор директив, позволяющих управлять индексацией сайта.
Когда краулер приходит на хостинг, файл robots.txt является одним из первых документов, к которому он обращается.
В файле robots.txt содержатся инструкции, которые говорят поисковым роботам, какие URL на вашем сайте им разрешено обрабатывать. С его помощью можно ограничить количество запросов на сканирование и тем самым снизить нагрузку на сайт.
Файл robots.txt не запрещает показ ваших материалов в результатах поиска Google. Эта поисковая система его попросту ИГНОРИРУЕТ!
Если вы не хотите, чтобы какие-либо страницы с вашего сайта были представлены в Google, добавьте на них директиву noindex или сделайте их доступными только по паролю.
Robots.txt в большинстве случаев используется для исключения дубликатов, служебных страниц, удаленных страниц и других ненужных страниц из индекса поисковых систем.
Кроме того, именно через robots.txt можно указать Поисковой Системе адрес карты сайта. В некоторых случаях к robots.txt прибегают для того, чтобы закрыть сайт от нежелательной поисковой системы.
Правильное манипулирование robots.txt позволяет перенаправить бота ПС на нужные страницы, не разрешая создавать дубли контента, приводящие к понижению позиций.
При помощи файла robots.txt вы можете запретить сканирование таких файлов, как вспомогательные изображения, скрипты и файлы стилей, если считаете, что они лишь в незначительной степени влияют на оформление страниц.
Однако не следует блокировать доступ к ним, если это может затруднить поисковому роботу интерпретацию контента. В противном случае, страницы могут быть проиндексированы не правильно.
Если доступ к странице запрещен в файле robots.txt она все равно может быть проиндексирована по ссылкам с других сайтов.
Google не будет напрямую сканировать и индексировать контент, который заблокирован в файле robots.txt. Однако, если на такой URL ссылаются другие сайты, то он все равно может быть найден и добавлен в индекс.
После этого страница может появиться в результатах поиска (во многих случаях вместе с текстом ссылки, которая на нее ведет).
Пример файла robots.txt
Ниже приведен пример простого файла robots.txt с двумя правилами.
User-agent: Googlebot
Disallow:/nogooglebot/
User-agent:*
Allow:/
Sitemap: http://www.mysite.ru/sitemap.xml
Пояснения:
- Агенту пользователя с названием Googlebot запрещено сканировать любые URL, начинающиеся с http://seosaitov.ru/nogooglebot/
- Любым другим агентам пользователя разрешено сканировать весь сайт. Это правило можно опустить, и результат будет тем же. По умолчанию агенты пользователя могут сканировать сайт целиком.
- Файл Sitemap этого сайта находится по адресу https://seosaitov.ru/sitemap.xml
Файл robots.txt должен располагаться строго в корне сайта, он должен быть единственным.
Например, на сайте http://www.mysite.ru/ он должен располагаться по адресу http://www.mysite.ru/robots.txt.
Он не должен находиться в подкаталоге (например, по адресу http://www.mysite.ru/pages/robots.tx
Для файлов robots.txt можно использовать URL с субдоменами (например https://website.mysite.ru/robots.txt) или нестандартными портами (например, https://mysite.ru:8181/pages/robots.txt).
Число директив (команд) не должно превышать 1024.
Символ # предназначен для описания комментариев. Все, что находится после этого символа и до первого перевода строки не учитывается.
В описании адресов на сайте можно использовать квантор (wildcard) «*», он подразумевает «любую последовательность символов» и используется для обозначения префикса или суффикса пути до каталога или страницы по сайту (или вообще всего пути).
Файл robots.txt должен быть сохранён в формате plain text в кодировке UTF-8 и называться robots.txt
В файле robots.txt поисковый робот проверяет наличие записей, начинающихся с поля User-agent.
Данная директива определяет робота поисковой системы, к которому относится это конкретное правило индексирования сайта.
В соответствии со стандартом перед каждой директивой User-agent рекомендуется вставлять пустой перевод строки.
Правила должны указываться с учетом регистра.
К примеру, правило disallow: /file.asp распространяется на URL https://www.example.com/file.asp, но не на https://www.example.com/FILE.asp
Как скрыть сайт от индексации robots.txt
Внутри директивы User-agent возможно использование следующих правил:
- Должна быть хотя бы одна директива. В каждом правиле должна быть по крайней мере одна директива Disallow: (Запретить) или Allow: (Разрешить).
- Disallow: Указывает на каталог или страницу в корневом домене, которые нельзя сканировать поисковым роботом, определённым выше. Если это каталог, путь к нему должен заканчиваться слешем. Поддерживается квантор «*» для обозначения префикса/суффикса пути или всего пути.
- Allow: Директива указывает на каталог или страницу в корневом домене, которые нужно сканировать поисковым роботом (с User-agent, определённым выше). Используется также для того, чтобы отменить директиву Disallow: и разрешить сканирование конкретного подкаталога или страницы в закрытом для сканирования каталоге. Если указывается каталог, путь к нему должен заканчиваться слешем. Поддерживается квантор «*» для обозначения префикса/суффикса пути или всего пути.
- Sitemap. Необязательная директива, их может быть несколько или совсем не быть. Указывает на расположение карты сайта файла Sitemap. Можно перечислить несколько файлов Sitemap, каждый на отдельной строке.
- Неизвестные директивы игнорируются. Это позволяет при необходимости писать комментарии в файле robots.txt.
Типичными ошибками в robots.txt являются:
Перепутанные инструкции.
Одна из самых распространённых ошибок в 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.
Что стоит знать во время настройки robots.txt и его проверки в Google Search Console
Зеркала сайта и URL в директиве Host.
Чтобы указать, какой сайт является главным, а какой - зеркалом (дублем), для Google используются 301 редирект и внесение информации в Google Search Console, а для Яндекса ранее использовалась директива host. Сейчас эта директива устарела. Главное зеркало сайта явно указывается в Яндекс вебмастере. Рекомендуется эту директиву не использовать.
Редирект на страницу 404-й ошибки.
Довольно часто, на сайтах без файла robots.txt при запросе этого файла делается переадресация на другую страницу. Иногда такая переадресация происходит без отдачи статуса 404 Not Found. Пауку самому приходится разбираться, что он получил robots.txt или обычный html-файл. Эта ситуация вряд ли создаст какие-то проблемы, но все-таки лучше всегда класть в корень сайта пустой файл robots.txt.
Использование ЗАГЛАВНЫХ букв.
Хотя по стандарту robots.txt и нечувствителен к регистру, часто к нему чувствительны имена файлов и директорий.
Неправильно:
USER-AGENT: GOOGLEBOT
DISALLOW:
Правильно:
User-agent: googlebot
Disallow:
Перечисление всех файлов.
Еще одной ошибкой является перечисление каждого файла в директории:
User-agent:*
Disallow: /otxyvy/otzyv1.html
Disallow: /otxyvy/otzyv2.html
Disallow: /Mg/top1.html
Disallow: / Mg/top2.htm
Вместо этого можно просто закрыть от индексации директорию целиком:
User-agent:*
Disallow: /otxyvy/
Disallow: /Mg/
Отсутствие инструкции 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/
Использование в Disallow символов подстановки.
Иногда хочется написать что-то вроде:
User-agent:*
Disallow: file*.html
для указания всех файлов file1.html, file2.html, file3.html.
Это допустимо в Яндекс и Google
https://yandex.ru/support/webmaster/controlling-robot/robots-txt.html#asterisk-dollar
https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt?hl=ru
Более того, Яндекс по умолчании, к концу каждого правила, описанного в файле robots.txt, приписывает спецсимвол*.
Пример.
User-agent: Yandex
User-agent: Yandex | |
Disallow: /cgi-bin* | #блокирует доступ к страницам, начинающимся с ’/cgi-bin’ |
Disallow: /cgi-bin | #то же самое |
Чтобы отменить * на конце правила, можно использовать спецсимвол $, например:
User-agent: Yandex | |
Disallow: /example$ | #запрещает ‘/example’, но не запрещает ‘/example.html’ |
User-agent: Yandex |
|
Disallow: /example | #запрещает и ‘/example’ и ‘/example.html’ |
Спецсимвол $ не запрещает указанный * на конце, т.е:
User-agent: Yandex | |
Disallow: /example$ | #запрещает только ‘/example’, а так же, как “Disallow: /example’ |
Disallow: /example*$ | запрещает и ‘/example.html’ и ‘/example’ |
Неправильный НТТР-заголовок.
Сервер должен возвращать в НТТР-заголовке для ots.txt «Content-Туре: text/plain» а, например, не "Content-Type: text/html". Неправильный заголовок может привести к тому, что некоторые роботы не обработают файл.
Логические ошибки.
Зачастую при разветвленной структуре сайта возникают логические ошибки в определении того, что и как нужно блокировать от индексации.
Для Google:
На уровне группы, в частности для директив allow и disallow, самое строгое правило, учитывающее длину записи [путь], будет важнее менее строгого и более короткого правила. Порядок очередности правил с подстановочными знаками не определен.
URL | Allow | Disallow | Вердикт |
https://mysite.ru/page | /p | / | allow |
https://mysite.ru/folder/page | /folder/ | /folder | allow |
https://mysite.ru/page.html | /page | / | undefined |
https://mysite.ru/ | /$ | /*.html | allow |
https://mysite.ru/page | /$ | / | 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>>> для Яндекса.
Создание и тщательная подготовка robots.txt крайне важны.
При его отсутствии поисковые роботы собирают всю информацию, относящуюся к сайту.
В поиске могут появиться незаполненные страницы, служебная информация или тестовая версия сайта.