Оптимальный robots.txt - часть 2

+45
9.06K
В первой части мы разобрали основы файлы robots.txt, теперь попытаемся понять как и что запрещать им для индексации.


Читая комментарии к прошлому посту, возникло ощущение что текст люди читают даже не наискось, а снизу вверх через 3 строчки. Еще раз кратко вспомним основные вещи:

1. User-agent

Прямое обращение к поисковому боту — приоритетнее общего обращения

picaboo
Если вы пишите
  1.  
  2. User-Agent: Googlebot
  3. Allow: /
  4.  
  5. User-agent: Yandex
  6. Allow: /
  7.  
  8. User-agent: *
  9. Disallow: /admin/
  10. Disallow: /backups/
  11.  
  12.  
Диррективы будут обработаны Гуглом и Яндексом там, где было прямое обращение к ним, секция с "User-agent: *" ими будет проигнорированна в пересекающихся директивах, поскольку у нее меньший приоритет.

2. Директива Host

Директива Host должна быть последней, если она располагается в секции с "User-agent: *", поскольку она есть в спецификации только бота Яндекса и остальные боты сочтут вашу секцию ошибочной и после этой директивы дальше в этой секции ничего не считают

picaboo

  1.  
  2. User-Agent: *
  3. Host: ваш_сайт.com
  4. Sitemap: http://ваш_сайт.com/sitemap.xml
В данном случае "Sitemap: ваш_сайт.com/sitemap.xml" не будет принято ботами, его прочитает только Яндекс. Остальные споткнуться на директиве Host

В конце кратко еще разберем основные ошибки в синтаксисе, есть очень хороший пример с несколькими ошибками, на нем и рассмотрим.

Итак, продолжим.


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

Disallow — запрещает
Allow — разрешает

В данный момент директиву Allow поддерживают почти все боты, но нам важно что её стал поддерживать Яндекс (Гугл поддерживает изначально, так как это он её ввел)

Когда же и как их использовать? Раньше роботс составлялся из расчета того, что мы вносим в него все то что мы хотим запретить. В данный момент логика осталась прежней, мы в нем запрещаем.

  1.  
  2. Disallow: /users/
мы запретили индексировать раздел сайта в урл которого начинается с /users/

Для чего же ввели директиву Allow ?

  1.  
  2. Disallow: /users/
  3. Allow: /users/Vasia_Pupkin
Для случаев когда нужно внутри закрытой от индексации директории, разрешить проиндексировать подраздел или страницу. У нас в примере закрыты от индексации профили пользователей, но мы разрешили проиндексировать профиль Vasia_Pupkin

Ввиду данной особенности, надо понимать что Allow имеет больший приоритет чем Disallow, поэтому когда вы пишите
  1. User-Agent: *
  2. Allow: /
  3. Disallow: /users/
  4.  
то писать потом правила запрета бесполезно. Вы уже все разрешили. Все директивы "Disallow" будут проигнорированны.

Что нужно запрещать, а что разрешать?

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

Запрещаем дубли страниц.

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

— Если на сайт включена поддержка ЧПУ — то нужно запретить дубликаты контента которые возникают при обращении напрямую к index.php. Если на сайте есть компоненты в которых нет ЧПУ — то их надо разрешить

— Нужно запретить к индексации поиск по тегам, поскольку при обращении к тегам формируется страница с не уникальным контентом.

— Нужно запретить к индексации поиск по сайту.

  1.  
  2.  
  3. User-agent: *
  4. Disallow: *.php
  5. Аllow: guestbook.php #в качестве примера, открываем скрипт guestbook.php для индексации
  6. Disallow: /search
  7. Disallow: /forum/thread*-1.html #закрываем дубль первой страницы темы на форуме
  8. Disallow: /login
  9. Disallow: /registration
  10. Disallow: /go/ #закрываем внешние ссылки
  11. Disallow: /templates #закрываем от индексации шаблон, там много мусора ввиде картинок, файла со стилями, скриптов. если скрипты есть где еще - лучше тоже прикрыть.
  12. Disallow: /uploads #закрываем файлы загруженные пользователями, можно и оставить открытыми.
  13. Sitemap: http://ваш_сайт.com/sitemap.xml
  14. Host: ваш_сайт.com
  15.  
Это минимальный файл robots.txt который нужен системе.


5. Ошибки

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

  1.  
  2. User-agent: *
  3. Disallow: /admin/
  4. Disallow: /languages/
  5. Disallow: /users/
  6. Disallow: /core/
  7.  
  8.  
  9. Host: ваш_сайт.com
  10. Sitemap: http://ваш_сайт.com/sitemap.xml
  11.  
Все что идет после "Disallow: /core/" не будет учтено.

— Неправильное указание User-agent. Название поискового бота нужно брать из спецификации поисковика

User-agent: Googlebot #верно
User-agent: googleBot #не верно синтаксически. по стандарту robots.txt нечувствителен к регистру, но принято писать правильно как в спецификации.
User-agent: google #не верно

— Указание нескольких дублирующихся User-agent. Будет учтен только первый — остальные проигнорированы

  1.  
  2. User-Agent: Googlebot
  3. Allow: /
  4.  
  5.  
  6. User-agent: Yandex
  7. Allow: /
  8.  
  9. User-Agent: * #учтен
  10. Allow: /
  11.  
  12. User-agent: * #проигнорирован
  13. Disallow: /admin/
  14.  
— Отсутствие слешей при указании директории. Если нет слешей, то будет воспринято как имя файла и как директория.

  1.  
  2. User-agent: *
  3. Disallow: /news/ # - запрещена директория "news"
  4. Disallow: news # - запрещено всё где встретится "news", например /games/gameloft-[b]news[/b].html
  5.  
— Отсутствие инструкции к директиве Disallow. В случае когда нам нужно использовать дополнительную директиву и нам нечего запрещать, по стандарту мы все равно должны вставить Disallow, иначе робот может проигнорировать секцию как пустую.
  1.  
  2. User-agent: Yandex
  3. Disallow: # - без этой строки неправильно. эта строка ничего не запрещает
  4. Host: ваш_сайт.com
  5.  
— Директива Host. Она работает только для Яндекса, поэтому самый правильный вариант вынести её в отдельную секцию, как описано в примере выше. Если мы выносим её в общую секцию, то она должна идти самой последней, так как роботы которые по спецификации её не поддерживают — не будут считывать данные в секции после нее.

  1.  
  2.  
  3. User-agent: *
  4. Disallow: *.php
  5. Аllow: guestbook.php
  6. Disallow: /search
  7. Disallow: /forum/thread*-1.html
  8. Disallow: /login
  9. Disallow: /registration
  10. Disallow: /go/
  11. [s]Host: ваш_сайт.com [/s] # - неправильно, всё что ниже этой строки не будет считано
  12. Sitemap: http://ваш_сайт.com/sitemap.xml
  13. Host: ваш_сайт.com # - правильно. если бот не поддерживает диррективу host, то он при ошибке дальше не будет считывать секцию, а у нас там и так больше ничего нет.
  14. Host: http://www.ваш_сайт.com/ # - неправильно, потому что нельзя указывать гиперссылку
  15.  

-----------------------------------------------

И под конец, немного троллинга :)
Многие вебмастера рады стараться настолько, что пишут в роботс не только что нужно, но и все что не нужно.


Указывать или нет, запрет на индексацию админки сайта, директории с бекапом базы данных, директорию с кэшем движка?

Поговорим об этом? :)
-1
letsgo letsgo 12 лет назад #
а если попробовать поэкспериментировать) например зачем закрывать вот это
0
soxom soxom 12 лет назад #
Не думаю, что удачное решение... Тэги лучше всего закрыть. Хотя я понимаю к чему вы клоните. Но в данном случае, мы получим дубли, но в поиске не вылезем. Поэтому закрываем до лучших времен
-1
letsgo letsgo 12 лет назад #
Дубль в чем? Суть в том, что страница получается достаточно релеватная, и с уникальным собственно контентом, эдакий сборник релевантной информации. Хотя пока не уверен, но в поиске такие страницы все же очень хорошо пролетают в топ. Есть дубль этой страницы ?
+1
picaboo picaboo 12 лет назад #
боту нужен текст. если страница состоит из ссылок - лучше не надо давать ему эту страницу :)
-1
letsgo letsgo 12 лет назад #
Я довольно часто встречал заходы с топа, когда смотришь запрос а он как раз таки и состоит из тега и ответа на него в количестве 10 страниц. Смотрю и ведь действительно релеватно, я это к чему, к тому, что возможно не строго прямо надо закрывать теги, можно пробовать и не закрывать и смотреть результат.
0
picaboo picaboo 12 лет назад #
я у себя не закрываю, но я разбавляю немного текстом
0
picaboo picaboo 12 лет назад #
да не факт. если чуть поднапрячься и добавить тексту - то можно и не закрывать
instantcms.ru%2Fsearch%2Ftag%2F " target="_blank">http://yandex.ru/yandsearch?text=&lr=2&site=instantcms.ru%2Fsearch%2Ftag%2F - вот так конечно выглядит забавно и лучше закрыть от греха :)
0
picaboo picaboo 12 лет назад #
0
picaboo picaboo 12 лет назад #
еще попытка

парсер паразит режет :)
0
soxom soxom 12 лет назад #
Ребята, вы из прошлого века? Сейчас очень осторожно нужно относиться к подобным экспериментам... Если получиться, что ваш сайт вылезет и станет получать хороший трафик, то это может сыграть не в вашу пользу. Вот, советую почитать - http://ain.ua/2011/08/03/54876
-2
letsgo letsgo 12 лет назад #
Заговор врагов я так понимаю?) Как связать ваш пост с тем, что мы обсуждали выше, не подскажете?)
0
picaboo picaboo 12 лет назад #
да. мне чуть больше 12 лет - я из прошлого века :)

ок. с инет магазинами работали? много позиций товара, под каждый страница, куча конкурентов с таким же товаром... намек поняли в какую я сторону?
0
soxom soxom 12 лет назад #
Я как раз сейчас веду несколько магазинов ))) Не нужно мне рассказывать такие детали... Просто не стоит, думаю, ставить такие эксперименты, они не дадут суперского эффекта, а вот проблемы могут создать.
Что касается летсгоу, то уже не раз просил - не читайте между строк... У вас на сайте будет слишком много дублей, страница тэгов, это как раз та страница, которую двигать. В Инстанте, тэги чтобы двигать нужно либо полностью переделать (сделать что-то похожее на категории), с уникальным текстом в каждом + нормальным урлом, либо закрыть.
0
reload reload 12 лет назад #
не совсем уверен, но не закроет ли эта запись:
Disallow: /forum/thread*1.html #закрываем дубль первой страницы темы на форуме
также страницы:
thread-11.html
thread-21.html
и т.д.
?
0
picaboo picaboo 12 лет назад #
тире пропустил smile счас добавлю.

Disallow: /forum/thread*-1.html
0
reload reload 12 лет назад #
и еще вопрос) есть ли смысл закрывать от индексации страницы которые являются 100% ым дублем?
или все же выгодней их клеить?
Просто ссылок, якобы много на эту страницу может быть, а мы ее закроем и вес она не получит. Я думаю что правильней 100% ые дубли редиректить, хотя могу и ошибаться)
0
picaboo picaboo 12 лет назад #
конечно правильнее smile другой вопрос что этих дублей вообще не должно быть. :(
0
reload reload 12 лет назад #
ну думаю с последним могут и послать в мягкой форме)) так что лучше самому допиливать) Нас здесь много - вот и подскажем и поможем друг другу. Главное знать где косяки - а как убрать их, придумаем)
0
picaboo picaboo 12 лет назад #
я инстант не пользую почти, поэтому про дубли знаю мало smile
можно сделать на форуме тему и собрать все дубли там и уже к ним сделать патч с редиректами и роботсом.
0
soxom soxom 12 лет назад #
В целом неплохая получилась статья, но есть мысли ))
1) Мы обсуждали уже конструкцию с дублями страниц на форуме (кстати и в блогах и статьях есть такая же проблема). Можно было либо запретить в роботсе, но потерять внутренний вес (немного, но все же), либо склеить 301 редиректом. Очень хорошее решение данной проблемы дал пивуа, его редирект можно использовать не только на форуме, но и в блогах и в статьях и фотогалереи, одним словом везде где есть подобные дубли. Так вот, если мы поклеим страницы 301 редиректом и напишем в роботсе запрет на их индексацию, то мы просто могли бы и не клеить... Так как робот все равно не перейдет по данной ссылке и не увидит 301... То есть, мы ставим либо 301, либо запрещаем в роботсе, но никак не вместе
2) Что касается дублей, то поверьте, в Инстанте их минимум (я сам новичок в данном движке и пока далеко не во всем разобрался, но это я вижу)... Я работал со многими движками и уж поверьте, там дубли на каждом шагу ))) Вы наверное их просто не замечаете... Но они точно есть )))
0
picaboo picaboo 12 лет назад #
1. В вашем топике же поливали меня грязью за то что я утверждал что редирект лучше чем закрыть роботсом и потерять ссылочное:) ну не суть.

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

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

2. дубли есть везде, просто они не очевидны.

к примеру у этого топика дубль (и не один)
http://instantcms.ru//blogs/raznye-melochi/optimalnyi-robots-txt-chast-2.html#comment_29066
и вроде как тоже надо закрыть :)
0
picaboo picaboo 12 лет назад #
В вашем топике же поливали меня грязью за то что я утверждал что редирект лучше чем закрыть роботсом и потерять ссылочное:) ну не суть.
*закрыть редиректом, а не роботсом
0
soxom soxom 12 лет назад #
Насчет первого пункта я просто пояснил ))) Знаю что вы сами знаете. Что касается второго, то решетка - это не дубль
0
picaboo picaboo 12 лет назад #
решетка - это не дубль

провокация не удалась sad смайлик в конце фразы меня выдал :(
0
soxom soxom 12 лет назад #
И что вы хотели меня подловить этим? Глупо, не кажется?
+3
picaboo picaboo 12 лет назад #
Что бы не было вопросов - покажи свой роботс :))

User-agent: *
Disallow: /
Allow: /news/
Allow: /content/
Allow: /foto/
Sitemap: http://site.ru/sitemap.xml
Host: site.ru
0
Soviet-Girl Soviet-Girl 12 лет назад #
А как закрыть поиск по тегам в каталоге?

Так: Disallow: /catalog/*/tag/* ??
+1
picaboo picaboo 12 лет назад #
каталог не юзал - структуру не понимаю. нужно пример урла который надо закрыть.
0
artlab artlab 12 лет назад #
Покажу свой,может я каких ошибок и не заметил,буду рад адекватным советам.
Да и может кому пригодится)
Спойлер
0
picaboo picaboo 12 лет назад #
восхищен !! :)


можно было сделать
User-agent: *
Disallow: /

и убрать все секции кроме яндекса и гугла. эффект тот же, только файл в 50 раз меньше.

сайт мап и хост должны принадлежать какой либо секции. по уму надо сайт мап добавить в гугловскую и яндекс. а хост только в яндекс добавить и все.
0
artlab artlab 12 лет назад #
Ну зачем же
User-agent: *
Disallow: /
crazy
С этим роботсом в яше 500 и в гугле 1200 страниц в индексе,и много в топе)
сайт мап и хост должны принадлежать какой либо секции
так и было,но при анализе роботса на яндексе он показывал четыре ссылки на карту сайта,потому перенёс в конец,как и хост,чтоб не стопорил он других ботов.Сам не пойму,как лучше сделать.
0
picaboo picaboo 12 лет назад #
роботс на топ не влияет. почти.

нет, без шуток
User-agent: *
Disallow: /

заменит перечисление всей кучи ботов. у вас будет запрет доступа к сайту всем кроме оставленных


примерно так
0
artlab artlab 12 лет назад #
можно,но пусть останется пока так,есть ещё рамблер,бинг,яхху и т п
0
soxom soxom 12 лет назад #
Про рамблер забудьте он как поисковик уже помер, бинг и яху не приносят нормальный трафик на территории СНГ...
0
picaboo picaboo 12 лет назад #
Яху вроде как уже тоже того smile беки не проверить :(
0
soxom soxom 12 лет назад #
Роботс прямо на ТОП не влияет, но косвенно даже очень. Хотя, на мой взгляд, тема с роботсом, если честно, раздута до безобразия )))
0
picaboo picaboo 12 лет назад #
ну и чисто для статистики:

- часто поисковый бот в админку лезет и в кеш? а в бекапы сайта?

- статьи-фотки добавляет часто? регается? записи на стену?
0
Lana Lana 12 лет назад #
А можно спросить, возможно вопрос очень ньюбский, сорри )
А можно как-то закрыть доступ ботам или программам, которые парсят RSS (ну коментарии те же скажем) - чем не источник уникального контента для всяких граберов.
Ну тоесть если заход с броузера, то RSS пожалуйста, если чего-то с какого-то сервера запрашивает, то отворот поворот?
+1
picaboo picaboo 12 лет назад #
роботсом не закрыть
0
Lana Lana 12 лет назад #
Ясно, спасибо! Но реализуемо вообще практически?
Или это слишком сложно, проще вообще RSS поотключать?
+1
picaboo picaboo 12 лет назад #
можно сделать условие на php чтобы проверять юзер агента и отдавать пустой файл. но тут заковыка в том что граберы все используют юзер-агент броузеров основных и поэтому практически бесполезно.
0
RSN RSN 12 лет назад #
soxom

Начало топика это наверно из моего файла:
User-Agent: Googlebot Allow: / User-agent: Yandex Allow: / User-agent: * Disallow: /admin/ Disallow: /backups/

В Первом Вашем блоге пришел к некоторым выводам и проверил их по сети, изменил файл после сегодняшнего ночного апа
пропали ошибки, уже сказал тема нужная, но как Вы правильно заметили:
Читая комментарии к прошлому посту, возникло ощущение что текст люди читают даже не наискось, а снизу вверх через 3 строчки.
Олег Васильевич я Олег Васильевич я 12 лет назад #
Комментарий удален
0
picaboo picaboo 12 лет назад #
Disallow: /?iblock=*
Олег Васильевич я Олег Васильевич я 12 лет назад #
Комментарий удален
+1
picaboo picaboo 12 лет назад #
Если надо закрыть именно тот урл что выше, то да, просто добавить
Олег Васильевич я Олег Васильевич я 12 лет назад #
Комментарий удален
0
picaboo picaboo 12 лет назад #
Все так кроме 7 строки, она странная joke звездочку лучше поставить после, а не до. Тогда получится что запрещены все урлы которые начинаются с index.php
Олег Васильевич я Олег Васильевич я 12 лет назад #
Комментарий удален
+3
picaboo picaboo 12 лет назад #
это два разных случая. в первом закрывается любой урл в конце которого последним идет index.php, а во втором случае любой урл который начинается с index.php

решайте сами что вы хотите закрыть в своем конкретном случае
Олег Васильевич я Олег Васильевич я 12 лет назад #
Комментарий удален
0
GluK GluK 10 лет назад #
Подскажите, для 2.1.2 этого достаточно?
Код PHP:
  1. User-agent: *
  2. Disallow: /templates
  3. Sitemap: http://www.site.ru/cache/static/sitemaps/sitemap.xml
  4. Host: www.site.ru

Еще от автора

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