Robots.txt – различные мелочи + допускаемые ошибки по незнанию. Часть 1

Продолжаю тему про закрытие от роботов. Бывает так, что нужно закрыть не только отдельную ссылку, или отдельную страничку, а закрывать что-то целиком. Или же папки. Есть очень хороший способ – файл robots.txt



Разумеется, многие знают про него и используют его, но есть такие моменты, которые некоторые не знают, или в чем-то заблуждаются. К примеру, я читал различные блоги, и во многих писалось о некоторых вещах, что они работают везде и т.п. Но это не так. Есть «фитчи», которые доступные только Яндексу. И всё остальное в том же духе.

Метод robots.txt

Этот способ очень старый, но при этом, он очень хорошо работает. В чем смысл этого файла? Это политика поведения робота, целиком на всём сайте. То есть, любой поисковый современный робот, прежде чем работать с вашим сайтом, считывает этот файл. И если в нём что-то запрещено, то он это не делает. Даже если на это стоит ссылка и прочее, он всё равно это игнорирует.

То есть, такой универсальный способ целиком на всём сайте что-то закрыть (часть сайта, часть страниц сайта).

Это обычный текстовый файл, который находится всегда в корне вашего сайта.
Синтаксис

# - всё то, что начинается на решетку, это комментарий.

Файл robots.txt состоит из блоков. То есть, у него может быть от одного до нескольких блоков текста. Блок всегда начинается на инструкцию

User-agent:

Это означает, для кого. То есть, к кому роботу вы обращаетесь. Можно указывать * — это значит ко всем роботам.

По стандартам, если указывать для какого-то конкретного робота, нужно указывать не просто Yandex, Google, а именно так, как он представляется в реальности.

К примеру, для Гугла
Googlebot/2.1 (+http://www.google.com/bot.html)
Для Яндекса
Mozilla/5.0 (compatible; YandexBot/3.0)

Но, современные роботы совершенно нормально воспринимают, когда вы просто пишите имя поисковика. После обращения идет набор инструкций.

Disallow – начало строки запрета.

Правила Disallow

Вот здесь очень важно понять правила записи этого Disallow.

Указывать нужно не полные ссылки, а только то, что робот получает при HTTP запросе.

Когда любой браузер, или же бот, подключается к серверу, говорит ему:
GET /topic/zapret-indeksacii-na-sayte-prodolzhenie-diskussii.html HTTP/1.1


Вот нам в Дисаллоу надо указывать именно то, что просит бот.

/topic/zapret-indeksacii-na-sayte-prodolzhenie-diskussii.html

Важно
Тут, по сути, идет не конкретное условие, что если запрос был только на
/topic/zapret-indeksacii-na-sayte-prodolzhenie-diskussii.html
то нужно запретить именно это.

Если указывать
Disallow: /topic/zapret-indeksacii-na-sa

То страничка
3wcom.ru/topic/zapret-indeksacii-na-sayte-prodolzhenie-diskussii.html
так же будет запрещена.

Другими словами, если обращение бота содержит то, что написано в запретах, то он не будет обрабатывать.

Тут есть много нюансов.
Если укажем боту
Disallow: /top

То он запретит

3wcom.ru/topic/zapret-indeksacii-na-sayte-prodolzhenie-diskussii.html
3wcom.ru/topic/
3wcom.ru/topic/dle-top-10-moduley.html
и всё остальное, что начинается на /top

Даже

3wcom.ru/topic.jpg
3wcom.ru/topic.png
3wcom.ru/top.php
3wcom.ru/topic.html

и так далее.

Поэтому, тут нужно быть очень аккуратными, чтобы случайно не запретить всё подряд.

Запрет папки

Например, я хочу запретить папку folder, которая находится в корне сайта.

Если написать
Disallow: /folder
То будет запрещена папка и все остальные файлы, при обращении к которым начинается строка с /folder.

Почему? Всё потому, что их обращение начинается с /folder.

Не заблуждайтесь, и не думайте, что вот, типа ну и пусть. Всё равно нужно запретить всё вложенное.

Но указав /folder вы закроете не только вложенное, но и то, что будет в корне и начинается на folder.

То есть, вы сможете запретить и папку folder2, folder 3 и файлы folder.php и так далее.
Поэтому, чтобы запретить именно папку и всё то, что лежит внутри её, нужно в конце ставить “/”.
Disallow: /folder/

Интересные моменты с Disallow

Момент 1

Если вдруг, вы напишите
Disallow: /
То вы запретите на индексацию весь сайт! Потому что любое обращение робота начинается со слеша. И ваш запрет «/» попадает под любой запрос.

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

Момент 2

Иногда бывает и так, что вы, наняли какого-нибудь сеошника или попросили знакомого и прочее и потом его уволили/сказали что больше помогать не надо (это в случае друзей).

Вот они могут подложить вам мину…

Напишут вам
Disallow: /

Что будет в результате? Дело в том, что это политика запрета индексации. А поисковик, это две части: поиск и индесация. Робот перестал ходить к вам. От этого ваш сайт с индекса не исчезнет

Он нормальный. Он функционирует. В поиске есть. Проходит месяц-два.

У Яндекса есть готовый инструмент, который называется удаление URL. Причем он работает без всяких паролей, логинов и тому подобного.



Перейдя по ссылке webmaster.yandex.ru/delurl.xml вы увидите следующее.



Для чего этот инструмент? Вот, к примеру, Яндекс проиндексировал страницу, а Вы не хотите чтобы она была в индексе.
Делаем вот так.



После нажатия на удалить нам пишут:

Нет оснований для удаления. Сервер не возвращает код 404, индексирование не запрещено ни в robots.txt, ни метатегом noindex.



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

Вот тому человеку, который вам закинул «мину», заходит сюда и вбивает ваш сайт. Хлоп! И Ваш сайт слетает. И его нет на Яндексе.

Совет

Если увольняете кого-то, или не хотите чтобы больше вам помогали, то сначала меняем все логины и пароли. Все! Абсолютно. На хостинг, на панель управления, на FTP и на всё остальное. А потом говорите этому человеку, что отказываетесь от его услуг.

Различные неприятности


Что еще может быть не приятного и ошибочного в указании Disallow?
Вот смотрите, может быть так.

User-agent: *
…..
Disallow: /aaa/
….

User-agent: Googlebot
….

Вот смотрите, запрета конкретно для Гугла на папку ааа нет, но она запрещена для всех. По логике вещей, она должна быть и ему запрещена. А в реальности и по стандартам – нет.

Это очень распространенная ошибка.
Если робот находит свой блок, то он остальные блоки просто игнорирует!

Бот сразу не исполняет «код». Он сначала анализирует, на наличие собственного блока, и если такового нет, то исполняет общие правила.

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

Что еще может быть?

Допустим, некоторые пытаются запретить на индексацию все какие-то файлы.
Disallow: /topic/*.php

Ну, так вот, это не работает. Причем хитро не работает. На Яндексе работает, а на Гугле нет. По стандартам, внутри директивы Дисаллоу звёздочек нет. Точнее есть наполовину. Гугл не понимает, а Яша понимает. Поэтому, лучше внутри Disallow никаких * не писать.

Google увидит и поймет это так – запрещен файл 3wcom.ru/topic/*.php

Но такого файла — нет.

Продолжение будет скоро  

1 комментарий

avatar
  • GOR
Хороший материал, хотя и известный мне достаточно глубоко, так как постоянно мучаю свои мозги при составлении файла роботс для разных платформ. Ошибки возникают у веб-мастеров еще и от не знания структуры CMS. Для некоторых, например, того же DLE он вообще должен иметь минимальный вид, то есть такой:
User-agent: *
Disallow: /engine/
Host: site.ru
Sitemap: http://site.ru/sitemap.xml
Для него лучше юзать одноименный метатег.
Относительно IPB могу сказать, что там вообще следует одни папочки перекрывать, а конкретные файлы в них — нет, и с точностью наоборот.
Ко мне обращались люди, которые делали все вроде бы правильно, но из-за одного «левого» слэша умудрялись пол сайта из индекса выбить, так что тут надо быть очень осторожным.