Оптимальный robots.txt

+49
11.63K
Казалось бы, такая очевидная вещь — составить robots.txt, однако количество ошибок при этом зашкаливает:(

Попробуем разобраться с основными моментами.


1. Что такое файл robots.txt

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

Яндекс

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

2. Указываем User-agent

С помощью директивы User-agent мы указываем к какому именно поисковому роботу мы обращаемся своим набором правил. Эта директива позволяет создать уникальные правила под робота Яндекса, Гугла и прочих поисковиков.

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

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

  1. User-agent: *
Таким образом мы обратились ко всем поисковым ботам зашедшим к нам на сайт. Для обращения к конкретному боту — надо указывать его имя

  1. User-agent: Yandex
или
  1. User-agent: Googlebot
Полный список поисковых роботов можно посмотреть здесь

Для более плотной работы с конкретным поисковиком, нужно изучить полный список роботов представленных в справке поисковика. Например Яндекс дает следующий список роботов:


'YandexBot' — основной индексирующий робот;
'YandexMedia' — робот, индексирующий мультимедийные данные;
'YandexImages' — индексатор Яндекс.Картинок;
'YandexCatalog' — "простукивалка" Яндекс.Каталога;
'YandexDirect' — робот, индексирующий страницы сайтов, участвующих в Рекламной сети Яндекса;
'YandexBlogs' — робот поиска по блогам, индексирующий комментарии постов;
'YandexNews' — робот Яндекс.Новостей;
'YandexPagechecker' — робот, обращающийся к странице при валидации микроразметки через форму «Валидатор микроразметки»;


Важно: Персональное обращение к роботу имеет больший приоритет чем общее и оно будет проигнорированно:

Правила указанные для
  1. User-agent: *
имеющие пересекающиеся указания в
  1. User-agent: Yandex
будут проигнорированы.

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

Пример:
  1.  
  2.  
  3. User-agent: *
  4. Disallow: /gallery
  5.  
  6. User-agent: YandexImages
  7. Allow: /gallery
  8.  
Мы запретили всем роботам индексировать Галерею, но роботу Яндекс.Картинок разрешили индексировать картинки в этом разделе сайта.

3. Указываем главное зеркало сайта. Директива Host

Мы разобрали что писать в начале файла robots.txt, теперь посмотрим что написать в конце. Директива Host нужна для указания главного зеркала сайта. Каждый сайт доступен как минимум по двум адресам с www и без www.
Определимся какой из урлов у нас будет главным (допустим с www) и запишем его:

  1.  
  2.  
  3. User-agent: *
  4.  
  5. Host: instantcms.ru
  6.  
Таким образом получили минимально необходимый robots.txt
Директива Host работает только для Яндекса. Гугл сам вполне корректно определяет главное зеркало сайта. Удачным решением будет добавить сайт в панель вебмастера в Гугле и в Яндексе и продублировать там эту информацию.

Когда мы указали главное зеркало сайта, мы подразумеваем что все ссылки на сайте формируются в соответствии с главным зеркалом сайта, однако пользователи на сторонних ресурсах могут ссылаться на ваш домен без www. В результате мы теряем часть ссылочной массы: это и ТИЦ, и ПР, и ссылочное.

самый простой способ — это 301 редирект через htaccess
  1. RewriteCond %{HTTP_HOST} ^instantcms\.ru$ [NC]
  2. RewriteRule ^(.*)$ http://instantcms.ru/$1 [R=301,L]
301 редирект сообщает поисковому роботу что страница постоянно перемещена по следующему адресу. В результате мы не теряем ссылочное и пользователь перешедший по неправильному адресу автоматически переадресуется на правильный.

4. Запрещаем и Разрешаем индексацию. Директивы Allow и Disallow

Основные ошибки происходят в этой части, центральной, файла robots.txt
Запретить то что не нужно запрещать😊Прежде чем приступать к написанию правил — важно четко понять одну простую вещь, робот видит сайт глазами незарегистрированного посетителя. Проанализируйте (разлогинившись) ваш сайт на предмет ссылок на системные папки и страницы генерируемые под залогиненого пользователя. Очевидно же что бот не может знать структуру системных папок на вашем сервере без доступа к фтп, поэтому запрещать ему доступ к системным папкам незачем. На них нет ссылок с сайта, а если есть, то лучше их убрать :)
Таким образом мы исключаем из запрета к индексации ссылки на добавление статьи, записи в блог, объявления, добавления фото и тд. То есть все те ссылки которые может увидеть только авторизованный человек.

Пример плохого файла:
User-Agent: * -Обозначили что правила распространяются на всех роботов
Disallow: /admin -Зачем то показали где у нас админка. ссылок на нее нет, где она знает только админ
Disallow: /actions — системная папка, ссылок прямых на нее нет
Disallow: /cache — системная папка, ссылок прямых на нее нет
Disallow: /backups — системная папка, ссылок прямых на нее нет
Disallow: /core — системная папка, ссылок прямых на нее нет
Disallow: /dump — системная папка, ссылок прямых на нее нет, при этом мы указали где искать дампы базы данных нашего сайта :(
Disallow: /wysiwyg — системная папка, ссылок прямых на нее нет
Disallow: /includes — системная папка, ссылок прямых на нее нет
Disallow: /modules — системная папка, ссылок прямых на нее нет
Disallow: /filters — системная папка, ссылок прямых на нее нет
Disallow: /languages — системная папка, ссылок прямых на нее нет
Disallow: /install — системная папка, нужно её вообще сразу удалять после установки
Disallow: /users — Список пользователей и Профили пользователей. Смысла закрывать от индексации нет. Если у вас спам в профилях — спам убирается другими способами, а вот так мы лишили себя большого количества страниц которые могут пригодится и в ссылочных биржах и в выдаче. В профилях кроме спама есть и контент по которому может быть траффик из поисковиков.
Disallow: /registration -Страница регистрации. Смысла в этой странице для поисковика нет. Стоит ли запретить её? Если посмотреть анализатором ПР страницы сайта, то мы увидим что это одна из внутренних страниц которая имеет больший ПР на сайте чем остальные(как разделы сайта), поскольку практически каждая страница сайта на нее ссылается. Убрать ли страницу или оставить и использовать для поднятия низкочастотных запросов за счет внутреннеё перелинковки? — на выбор.
Disallow: /login -Страница логина. Как и выше.
Disallow: /search — Страница поиска. Эта строка говорит поисковым роботам, что искать в результатах поиска не нужно. Однако если у вас нет ссылок на результат поиска — можно не закрывать эту страницу.
Disallow: /search/tag — Теги следует закрывать от индексации. Какими они не были бы красивыми😊но по ним отдается дублированный контент. Хотя есть случаи когда теги используют для группировки контента и оставляют открытыми.
Disallow: /go/ — Страница редиректа внешних ссылок. Запрещаем.

Итого из этого длинного списка, по делу оказалось лишь 3 строчки, остальное бесполезно и местами даже опасно (раскрытие путей к дампам базы данных, к админке и системным каталогам)

Пока закончим на основах, что бы было понимание того что делаем и почему так. В следующий раз будем разбирать дубликаты страниц и как их удалить из выдачи.
+1
soxom soxom 12 лет назад #
1) Думаю, что если бы вы сами не написали, про пути к дампам базы и системных каталогам, их никто бы и не додумался написать )))
2) Про профили... Ну это пусть уж сам вебмастер решает.
3) Гнать вес на Логин и регистрацию - это извращение
4) Про то, зачем закрывать поиск, тэги и индексный файл:
http://www.google.ru/search?q=site:http://instantcms.ru/search&hl=ru&lr=&newwindow=1&prmd=imvns&ei=HbAiT__ZBKeB4gSc_NW8CA&start=110&sa=N&biw=1280&bih=909

instantcms.ru%2Findex.php&hl=ru&newwindow=1&biw=1280&bih=909&num=10&lr=&ft=i&cr=&safe=images" target="_blank">http://www.google.ru/search?q=site%3Ahttp%3A%2F%2Finstantcms.ru%2Findex.php&hl=ru&newwindow=1&biw=1280&bih=909&num=10&lr=&ft=i&cr=&safe=images

Disallow: /search - Страница поиска. Эта строка говорит поисковым роботам, что искать в результатах поиска не нужно. Однако если у вас нет ссылок на результат поиска - можно не закрывать эту страницу. Disallow: /search/tag - Теги следует закрывать от индексации. Какими они не были бы красивыми но по ним отдается дублированный контент. Хотя есть случаи когда теги используют для группировки контента и оставляют открытыми.
Второй, глупо вписывать, если вы вписали первый ))) /search/tag итак запрещен, если вы запретили /search
0
picaboo picaboo 12 лет назад #
Если не закрыт поиск, то теги надо закрыть обязательно. Поэтому и второе правило для тех кто не запретил поиск

3 не извращение, кому надо закроет, но и от открытого вреда нет и пользу можно извлечь

Это вообще был разбор роботса одного из форумчан, яркий пример когда закрыто все. У большинства так.
0
nedoriko nedoriko 12 лет назад #
ну лично я поиск не могу закрыть. у меня в поиске игры лежат. просто начинал делать на инстанте и не знал как новый компонент сделать. вот в поиск их и определил.
0
soxom soxom 12 лет назад #
Так разрешите allow ))) Я не заню что это за игры, если дадите ссылку, помогу открыть для индексации
0
Моделист Моделист 12 лет назад #
Один вопрос: С каких пор появилась директива "Allow"?
Насколько я помню спецификации, такой директивы не было и нет. Можно только запретить.
Если проще то: что не запрещено, то разрешено.
+1
nedoriko nedoriko 12 лет назад #
эти игры
Моделист:
что не запрещено, то разрешено.
я тоже этим методом пользуюсь.
вот мой робот.тхт
User-Agent: *
Disallow: /login/
Disallow: /admin/
Disallow: /registration/
Disallow: /search/tag/
Host: www.svoi-vzglyad.ru
Sitemap: http://www.svoi-vzglyad.ru/sitemap.xml
+3
picaboo picaboo 12 лет назад #
У вас ошибка в роботсе. Директива Host должна идти последней в секции, поскольку она толька для Яндекса является родной, у остальных её нет в спецификации. Поэтому для других ботов это будет ошибочной директивой и они могут споткнуться на ней и дальше эту секцию не принимать. Sitemap может быть проигнорирован.
0
nedoriko nedoriko 12 лет назад #
спасибо. поправлю.
0
soxom soxom 12 лет назад #
Хороший совет! +
0
soxom soxom 12 лет назад #
Добавьте данную строчку в ваш роботс и считайте что закрыли поиск ))) И он нисколько не помешает индексации игр...

Disallow: /index.php
0
picaboo picaboo 12 лет назад #
Я у себя вообще закрываю всегда *.php
При включеном чпу - дублей всегда куча убирается
0
reload reload 12 лет назад #
С каких пор появилась директива "Allow"?
из yandex.ru/webmaster:
Чтобы разрешить доступ робота к некоторым частям сайта или сайту целиком, используйте директиву 'Allow'.
Директивы Allow-Disallow без параметров:
User-agent: Yandex
Disallow:

# то же, что и Allow: /

User-agent: Yandex
Allow:

# то же, что и Disallow: /
0
Алфей Алфей 12 лет назад #
Пример плохого файла:
А пример хорошего файла можно глянуть?!
0
picaboo picaboo 12 лет назад #
Пример сделаем во второй части. Задача стоит не скопипастить и забыть, а научится понимать этот инструмент и использовать его
0
reload reload 12 лет назад #
а что скажите о:
Disallow: /upload/userfiles/
на это ссылки есть?
просто заметил когда-то в выдаче файлы пользователей)
решил закрыть - правильно ли решил, или без разницы?)
0
soxom soxom 12 лет назад #
Это реально без особой разницы. Если закрыли, хуже не будет, но и бонусы не получите
0
reload reload 12 лет назад #
Да не бонусы ведь хотел получить)
а скрыть возможно "конфиденциальную" информацию от попадания в массы)
0
picaboo picaboo 12 лет назад #
Надо скрыть - скрывайте ;)
0
reload reload 12 лет назад #
Я у себя вообще закрываю всегда *.php
picaboo, случайно не подскажешь, возможно ли одной строкой скрыть все *.php
или так и писать
Disallow: *.php
нужны для каждой директории слеши?
сенкс.
0
picaboo picaboo 12 лет назад #
Disallow: *.php
скроет все урлы в которых будет встречаться ".php"

счас дописываю вторую часть - там с примерами расскажу.
0
TheSteek TheSteek 12 лет назад #
robots.txt для google

посмотрите))), а у vk.com робота.тхт нет))
0
TheSteek TheSteek 12 лет назад #
Allow: - для того если ссылки на сайте нет, робот соответственно не видит раздел , а индексация нужна. Так?
0
nedoriko nedoriko 11 лет назад #
я тоже оллов так понимаю. но вот работает он или нет. я незнаю
0
reload reload 12 лет назад #
Вот еще интересная штука.
Disallow: /search/tag/
У меня на одном сайте теги закрыты с самого запуска и гугл их не индексирует
а вот яша мало того что индексирует так еще и в выдаче выдает
может яша имел наши роботсы?
0
RSN RSN 12 лет назад #
А пример хорошего файла можно глянуть?!

Вот мой файл:

Код PHP:
User-Agent: Googlebot
Allow: /


User-agent: Yandex
Allow: /

User-Agent: *
Allow: /

User-agent: * 
Disallow: /admin/
Disallow: /backups/
Disallow: /backup/
Disallow: /board/
Disallow: /components/
Disallow: /wysiwyg/
Disallow: /includes/
Disallow: /modules/
Disallow: /filters/
Disallow: /languages/
Disallow: /users/
Disallow: /core/


Host: ваш_сайт.com
Sitemap: http://ваш_сайт.com/sitemap.xml
Функцию alloow понимает только Google
Мой сайт в топе...

так вот, чтобы не флудить у меня с таким
+1
picaboo picaboo 12 лет назад #
У вас не рабочий роботс. Перечитайте что я пометил важным в пункте 2, а так же выше про ошибку с host
0
nedoriko nedoriko 12 лет назад #
ну вот. я не единственный кто такой порядок сделал
Host:
Sitemap:
ну так может голосование сделаем))) как всетаки правильней?
0
Lana Lana 12 лет назад #
Только о нашем голосовании ничего поисковикам будет не известно )
Специально поменяла местами и проверила - http://webmaster.yandex.ua/robots.xml
написало что Яндескс использует все мои строки вмеспоте с
Host: ***
Sitemap: ***
Так что хотя я тоже думала что host последняя директива - видимо возможен и такой вариант.
+1
soxom soxom 12 лет назад #
Не будет трагедией если хост будет прописан перед картой сайта, но существует такая возможность, что Яндекс все будет видеть и использовать, а Гугл нет. Об этом писал Пикабу выше... Это конечно скорее всего миф, но лучше все-таки подстраховаться и поставить хост в робтсе последним
0
Евгений Фоменко Евгений Фоменко 11 лет назад #
Поисковые системы, в частности гугл, имеет оперативы, больше, чем необходимо для хранения всего интернета, неужели вы думаете, что у них не нашлось человека, который предусмотрел такой распространенный случай? Это вы спотыкаться можете, гугл - это алгоритм, который явно не троли делают. не забивайте дурным голову!
0
RSN RSN 12 лет назад #
У вас не рабочий роботс. Перечитайте что я пометил важным в пункте 2, а так же выше про ошибку с host
Он вполне рабочий (проверен), но этот файл не руководство для каждого ( доска, закрыта) но он просто как должен устроен ...

А насчет не рабочий извини уже проверен временем, ....
0
picaboo picaboo 12 лет назад #
В нем ничего не запрещается, а хост указан неверно. Эффект от вашего роботса - равен его отсутствию. ;)
0
RSN RSN 12 лет назад #
У вас не рабочий роботс. Перечитайте что я пометил важным в пункте 2, а так же выше про ошибку с host
Он вполне рабочий (проверен), но этот файл не руководство для каждого ( доска, закрыта) но он просто как должен устроен ...

А насчет не рабочий извини уже проверен временем, ....
0
soxom soxom 12 лет назад #
Здесь полностью согласен с пикабу... Ваш роботс практически бесполезен для сайта. Он не будет мешать развитию сайта, но и не поможет
0
Алфей Алфей 12 лет назад #
Получается в этом деле тоже, сколько людей - столько мнений, и у каждого правильное.
0
RSN RSN 12 лет назад #
Для джумлы проще, но для обширного инстанта, немного сложней,
Вообще общие правила ( и я согласен с замечаниями) можно найти в поиске Яши "robots.txt" вот скрин об ошибках

Но... по моим запросам и ключевым он вылез в топ (может можно улучшить, но пока устраивает), поэтому мнения здесь наверно не очень уж важны,
Но у меня только уникальный контент
+3
reload reload 12 лет назад #
Роботс и топ не совсем взаимосвязаны.
просто с правильным роботсом вы показываете что именно важно для индексирования и что индексировать не нужно
этим вы как минимум уменьшите нагрузку на сервер при постоянных сканированиях вашего сайта.
Попадание в топ зависит по большей степени от правильного написания статей ну и поведенчиского фактора и часто от частоты добавляемого материала + конечно внутренняя и внешняя оптимизация - здесь роботс играет не значитильную роль)
В роботсе нет смысла вначале открывать полный доступ гоше, потом яше а потом вообще всем после чего скрывать не нужные разделы - достаточно указать какие разделы вы закрываете для всех роботов через директиву User-agent: *
все остальное разрешено по умолчанию.
Если робот в директиве находит свое имя - остальные правила он игнорирует!!!
От сюда вывод - у вас сайт не имеет скрытых от индексации разделов для яши и гоши!!! все остальные роботы подчиняются условиям общей директивы!!!
Яша директиву Host: понимает в любом месте, но возможно ее непонимание другими робатами - поэтому другие дойдя до Host: и не прочитав ее просто проигнорируют все остальные правила!!! так что Host: лучьше писать последним иначе вашу карту не все роботы увидят (если конечно вы сами не скармливали ее))

вот как то так)
0
soxom soxom 12 лет назад #
Подробней и не напишешь ))
0
Евгений Фоменко Евгений Фоменко 11 лет назад #
Директива host тоже получается исключительно ради понтов приклеена ибо если мы ставим 301 редирект с www на не-www, то какой бот вообще сможет проиндексировать www.site? Называется отсортируйте документы и сожгите.
0
SJen SJen 11 лет назад #
директива host исключительно ради Яндекса, который ее придумал.
0
RSN RSN 12 лет назад #
Роботс и топ не совсем взаимосвязаны. просто с правильным роботсом вы показываете что именно важно для индексирования и что индексировать не нужно этим вы как минимум уменьшите нагрузку на сервер при постоянных сканированиях вашего сайта. Попадание в топ зависит по большей степени от правильного написания статей ну и поведенчиского фактора и часто от частоты добавляемого материала + конечно внутренняя и внешняя оптимизация - здесь роботс играет не значитильную роль) В роботсе нет смысла вначале открывать полный доступ гоше, потом яше а потом вообще всем после чего скрывать не нужные разделы - достаточно указать какие разделы вы закрываете для всех роботов через директиву User-agent: * все остальное разрешено по умолчанию. Если робот в директиве находит свое имя - остальные правила он игнорирует!!! От сюда вывод - у вас сайт не имеет скрытых от индексации разделов для яши и гоши!!! все остальные роботы подчиняются условиям общей директивы!!! Яша директиву Host: понимает в любом месте, но возможно ее непонимание другими робатами - поэтому другие дойдя до Host: и не прочитав ее просто проигнорируют все остальные правила!!! так что Host: лучьше писать последним иначе вашу карту не все роботы увидят (если конечно вы сами не скармливали ее)) вот как то так)

Проанализировав Ваш пост, начал искать истину на сайтах по рекомендациям по созданию роботс пришел к выводу, что Вы правы ... большой плюс и Вам и Особенно soxom за поднятую тему.
0
Nivil Nivil 11 лет назад #
У меня такой
User-agent: Yandex
Disallow: /login/
Disallow: /admin/
Disallow: /registration/
Disallow: /search/tag/
Host: www.promanual.ru
User-Agent: *
Disallow: /login/
Disallow: /admin/
Disallow: /registration/
Disallow: /search/tag/
Sitemap: http://www.promanual.ru/sitemap.xml
0
picaboo picaboo 11 лет назад #
User-Agent: *
Disallow: /login/
Disallow: /admin/
Disallow: /registration/
Disallow: /search/tag/
Sitemap: http://www.promanual.ru/sitemap.xml
Host: www.promanual.ru

можно укоротить, смысл не изменится
0
Clear Clear 10 лет назад #
думается что еще забыта корзина /price/cart.html и /catalog/viewcart.html - ну кому надо конечно )
А ну и еще /passremind.html итого получили дополнительные три строчки

Disallow: /price/cart.html
Disallow: /catalog/viewcart.html
Disallow: /passremind.html

Может еще что то есть ?
0
nedoriko nedoriko 10 лет назад #
обратил внимание что в яндекс вебмастере на некторых моих сайтах выбиваются страницы из поиска. заглянул к себе в фтп и заметил что мои роботы.тхт кудато делись.
вот и решил по новой их сосдать. но при этом задумался о моих поддоменах.
вопрос: как роботов в поддомен отправить? и надо ли прописывать www и http?
+2
dChirkis dChirkis 8 лет назад #
Для меня вопрос вновь актуален для 2 версии.
0
AS31 AS31 7 лет назад #
Не судите строго, я новичок в этом деле.
У меня такой robots.txt


User-agent: *
Disallow: /
Disallow: /index.php$
Allow: /board
Allow: /sitemap.xml
Allow: /sitemap_content_board.xml
Allow: /sitemap_content_pages.xml
Sitemap: http://сайт.ru/sitemap.xml
Host: http://сайт.ru/
0
AS31 AS31 7 лет назад #
Прочитав все за и против касающееся robots.txt и учитывая то что написано выше и пример плохого файла, составил свой
И он получился такой, мой сайт на тематику объявления:

User-agent: *
Disallow: /backup*
Disallow: /components/
Disallow: /search/
Disallow: /search/tag/
Disallow: /rss/
Disallow: /go/
Disallow: /index.php$
Sitemap: http://САЙТ.ru/sitemap.xml
Sitemap: http://САЙТ.ru/sitemap_content_board.xml
Sitemap: http://САЙТ.ru/sitemap_content_pages.xml
Host: http://САЙТ.ru/

Проверил в Яндексе и никаких ошибок и все 4 http адреса пометил зеленой галочкой.
Если что то не так поправьте...
0
Murrkin Murrkin 4 года назад #
А как на сегодня обстоят дела с оптимальным robots.txt кто что подскажет.
0
Антон Антон 4 года назад #
Предлагаю программистам сделать доп который автоматически бы формировал правильный robots.txt для инстант.

Еще от автора

Дефолтный шаблон  для 1.10.1 и 1.10.2
Дефолтный шаблон для инстанта
[ 1.9 ] Раскрытие логина и пароля админа
Храните свой пароль от админке за семью замками в трех программах? Думаете его никто не узнает?
Запрет открытия сайта во фрейме
Гугл при поиске по картинкам, результаты выдает открывая сайт с картинкой в своем фрейме, тем самым мы теряем пользователя который не переходит на сай
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.