You are here

Немного о сайте: robots.txt

РоботСейчас дополнительно свободного времени нет, поэтому сайтом занимаюсь по остаточному принципу. Тут, главное – хоть по чуть-чуть, но что-то делать. Как говориться, «вода камень точит». То там, то здесь что-то подточил, то здесь подкрутил.
 
Вопросы у меня возникают, как и у всякого новичка: на первый взгляд – сложные, но очень простые. Хотя, как сказать – интернет в помощь!
 
Вот, и сегодня, я ещё чуть-чуть поправил файл «robots.txt», и теперь он работает как надо. Потом прочёл этот текст, написанный ещё в 2012 году, и понял, что лучше будет не дополнять его очередным «P.S.», а переписать.
- Что сказать-то хотел? – Спросите Вы.
 
Начну со вступления. Файл «robots.txt» идёт с поставкой Drupal (хотя, можно сделать и самому). Он лежит в «корне» сайта и предназначен для того, чтобы ознакомить заскочивших поисковых роботов с «уставом» нашего «монастыря». Т.е., где, куда и когда им можно ходить, куда не ходить, где можно «снимать», а где «Paparazzi» не ждут. С одной стороны – это безопасность, а с другой – правильное продвижение сайта в поисковых рейтингах.
 
Безопасность – понятие относительное. А вот правильное позиционирование – категория более интересная. Если такой поисковик, как Google вполне терпимо относится к вольностям, то Yandex имеет свою систему фильтрации (АГС), учитывающую более сотни разных факторов: уникальность, полезность, интересность и пр. По каждому из них он что-то где-то отмечает и делает свои выводы (считает «косяки»). И если для сайта число отклонений превысит некую норму, то он просто начнёт исчезать из поисковых результатов. И останется только одна запись. Отсюда выражение – «попал под АГС».
 
Наиболее часто под это дело в Яндексе попадают «молодые» сайты: материала мало, много перепечаток, «косяков» и ошибок, плюс – многие страдают желанием сразу заработать – размещают рекламу. Яндекс не сообщит вам, что вы «попали» или «не попали». Он – «выше этого». Но, если вы «попали» - начнёте пропадать из поисковых результатов, народ перестанет вас «видеть», посещаемость упадёт, а дальше всё по цепочке причинно-следственных событий…
 
Как узнать, попали вы под АГС или нет? Можно прямо – написать письмо «Платону». Если «уважаемый джин соблаговолит» - вы узнаете. Можно непрямо: если в Яндексе у вас осталась только одна запись или число страниц в поиске Яндекса и (для сравнения) в другом популярном поисковике (например, Гугл – он более толерантен) станет различаться в разы – стоит задуматься. Можно плюнуть и растереть, но терпение других поисковиков тоже не безгранично (и у Гугла – тоже).
 
И я там был… «Матёрые» сайты говорят, что из-под АГС выйти самостоятельно практически невозможно. Враньё и способ заработка на пострадавших. Хотя, если у вас нет интереса и времени разбираться, можно дальше не читать и идти по указанному адресу со своими денежками. А вы что подумали? Я вполне сдержан в выражениях. Как говорит один мой знакомый: «каждый думает в меру своей распущенности».
 
Рекламы у меня не было, поэтому в этот «капкан» я не угодил. Основной причиной стали дубли страниц (это когда в один и тот же материал можно попасть по разным адресам) и попадание недоброкачественной рекламы в комментариях. Плюс, сами комментарии – они, ведь, тоже вносят дубли. Хотя, немного «соломки» у меня было – в настройках сайта я включил «чистые ссылки», что уменьшило возможное число проблем.
 
Поэтому первые правильные и логичные шаги – настройка и ограничение прав пользователей, создание системы мониторинга сообщений (комментариев), и удаление скрытой вредной рекламы. А дальше – надо убирать дубли. Зачастую, всё продумать и исправить нельзя, поэтому будет проще договориться и объяснить роботам, что индексировать, а что – пропускать.
 
И для этого у нас есть robots.txt (напоминаю, идёт вместе с Drupal), и в нём уже что-то написано. Написано там лишь то, что посчитали нужным сами разработчики. Могли ли они всё предусмотреть? Нет. Поэтому, с файлом стоит разобраться, и получить заслуженные «печеньки». Для начала – базовая информация о «robots.txt»:
 
 
А пока вернёмся в далёкий 2011 год. Первое, что я сделал, после создания сайта – зарегистрировал в поисковиках Google и Yandex. А можно было этого не делать? Можно. Однажды, поисковики, самостоятельно сканируя IP-адреса, увидят, что где-то что-то появилось и заглянут «на огонёк». Только, вот, вопрос, когда же это будет? И чтобы не ждать «у моря погоды», лучше всё сделать самому.
 
Естественно, перед операцией регистрации стоит поверить, а может роботы уже успели нас найти? Это просто: заходим в поисковик, и вводим имя сайта. Есть – значит, «метрическая» уже получена. Иначе, загляните в «регистратуры» Гугла и Яндекса:
 
Если есть желание сообщить о сайте другим поисковикам – можно заглянуть сюда, где заботливо собрана такая информация. Но, выскажу своё мнение. В настоящее время большинство поисковиков перестало работать самостоятельно, а всё больше обращаются к информации Google и Yandex. Поэтому, на первом этапе достаточно зарегистрироваться только там. Остальные – подтянутся. Берегите своё время!
 
Теперь неплохо решить вопрос с зеркалированием сайта (применить директиву Host) и помочь роботу Yandex-а:
 
User-agent: Yandex
Host: mustang-soft.com
 
Дальше, что я сделал – повысил безопасность сайта. Для этого, запретил индексировать некоторые директории и файлы с информацией об установках:
 
Disallow: /sites/all/
Disallow: /sites/default/defaults.settings.php$
Disallow: /sites/default/settings.php$
 
Вот и первый плюс: может, мне показалось, но число атак на сайт стало меньше. Действительно, зачем атаковать «чёрный ящик»?
 
 
А теперь, небольшое отступление. В файле «robots.txt» используются всего 3 (три) специальных значка:
  • «#» - символ начала комментария.
Примечание:
Не стоит писать комментарии в той же строке, что и директива. Не все роботы это одобряют. Лучше – писать в отдельной строке.
 
  • «*» - заменяет любую последовательность символов.
Примечание:
По умолчанию, все поисковые роботы считают, что строки директив (которые не заканчиваются «$») заканчиваются «звёздочкой», даже если её там нет. Поэтому, специально писать в конце каждой строки «*» - не надо. (/xxx/* и /xxx/ - будут пониматься одинаково).
 
  • «$» - знак конца строки.
Примечание:
Это именно тот случай, когда роботам надо сказать, что никакой «звёздочки» додумывать не надо, надо не «умничать» и читать, как есть. На практике, значок используют при запрете индексации файлов или конкретных страниц.
 
 
Продолжу. Не все роботы одинаково полезны. Есть устаревшие или специальные боты, нарушающие правила. Нарушителей надо «банить» и закрывать им доступ любым способом. Так будет правильно. Ещё, роботы не могут мгновенно понимать, что есть реальный физический каталог на сайте, а что есть просто участок пути в URL. Они разберутся, если захотят, но потом… И, да – мыслей они не читают.
 
Пара неприятностей. Некоторые «старые» роботы просто игнорируют символы «*». Это к тому, что не надо увлекаться новшествами в стандартах и реже использовать символ «*». Если сайт многоязычный и вы выбрали способ определения языка для отображения как «префикс в пути», то Google разберётся (но не сразу!), что директива «/xxx/» относится и к «/ru/xxx/» и к варианту «/en/xxx/», а вот некоторые другие – нет… Тоже стоит учесть.
 
Что-то мы немного увлеклись. Пора вернуться к практике. Так как у меня есть регистрация пользователей (например, перед вводом комментариев), из-за этого может возникать неприятная ситуация с «дубликатами» (см. описание здесь: http://www.drupal.ru/node/16176). Кроме того, поисковики любят заходить на страницу регистрации и просто так… Поэтому поступил радикально:
 
# Отключил стандартные настройки и сделал по-своему
#Disallow: /user/register/
#Disallow: /user/password/
#Disallow: /user/login/
#Disallow: /?q=user/password/
#Disallow: /?q=user/register/
#Disallow: /?q=user/login/
Disallow: /user
Disallow: /?q=user
 
Что ещё из стандартного стоит поправить:
 
# Учитываем особенности Drupal – запрет на все варианты node/add
#Disallow: /node/add/
#Disallow: /?q=node/add/
Disallow: /node/add
Disallow: /?q=node/add
 
И это ещё не всё. Давайте введём дополнительные правила для устранения дубликатов:
 
# The URL http://example.com/node is a duplicate of http://example.com/.
Disallow: /node$
Disallow: /?q=node$
 
# This will block your search form at http://example.com/search.
# That URL does a 302 redirect to http://example.com/search/node which is already
# blocked by the default robots.txt file.
Disallow: /search$
 
# This will block all of the URLs created by the Tracker Module which are in the format
Disallow: /*/track$
 
# Drupal creates RSS feeds for many types of content in the format
# http: //example.com/taxonomy/term/25/0/feed. If you don't block those RSS feeds,
# Google will put them in the Supplemental Results (even if they don't label the
# Supplemental Results in the SERPs anymore). The RSS feeds are duplicate content because
# they are the same text content except marked up with RSS/XML instead of X/HTML.
# This rule with block all the RSS feeds on the site except for the main RSS feed which is
# located at http://example.com/rss.xml by default.
Disallow: /*/feed$
 
Все эти строки я взял отсюда. Информация, хоть и устарела, но местами актуальна. Но, и я тоже оказался «не промах». Мои наблюдения подтолкнули к этим виршам:
 
# Вообще запрещаем смотреть комментарии любым способом
# Например, вот такое: http://site.com/ru/node/80#comments
Disallow: /*comment
 
# Запрещаем дубли всех первых страниц разделов.
# Например, дубли стартового раздела http://site.com/frontpage
Disallow: /*?page=0$
Disallow: /*?page=$

# Убираем дубли в таксономии

# http: //site.com/taxonomy/term/1/0 - это повтор http://site.com/taxonomy/term/1
Disallow: /taxonomy/term/*/0$
 
Что ещё посоветовать? Для безопасности будет лучше, если вы закроете от индексации любые дополнительные файлы и каталоги, созданные вами для собственных нужд (например, картинки). Возможно, большинство информации (или всё) в каталоге «/sites/default/files/». Так же, стоит закрыть от индексации технические или малоинформативные страницы (их наличие снижает рейтинги сайта). Например, «О нас» (/about$), «Контакты» (/contacts$).
 
Если у вас есть скрытые, «парольные» страницы – их тоже стоит исключить. Конечно, индексацию страниц можно исключить и в настройках тегов для роботов. Google, естественно, послушается (он «заточен» под это). Но, не стоит забывать, что у сайта могут быть сбои, плюс, в мире до сих пор существуют роботы, которые эти теги не анализируют. Поэтому, такие страницы лучше дополнительно исключить в robots.txt.
 
Дополнительная полезная информация.
  1. Страничка, где можно проверить правильность написания файла «robots.txt»: http://webmaster.yandex.ua/robots.xml
  2. Для контроля дублей без регистрации в инструментах веб-разработчиков в поисковика можно поступить так: выполнить два запроса по сайту и сравнить их результаты.
 
Например, в Google (это работает и в Yandex) можно поочерёдно выполнить:
site:mysite.ru
site:mysite.ru/&
где <mysite.ru> – это имя проверяемого сайта.
 
В первом случае, мы получим страницы <mysite.ru>, находящиеся в индексе Google (общий индекс, всё, что есть по сайту), а во втором — покажет страницы сайта, участвующие в поиске (основной индекс, где поисковик попытался частично отбросить «дубли» и брак). Если количество выданных результатов совпадут – значит, поисковик вполне разобрался и особых вопросов не возникает. А проблемные (в основном «дубли») – страницы, которые есть в первом варианте, но отсутствуют во втором.
 
Пора закругляться. Конечно, я ещё продолжу «допиливать» сайт и дальше. И, возможно, что-то ещё напишу об этом. Идеал, он, ведь – недостижим, но к нему душой стремлюсь. Если хочется «раскрутить» сайт, предстоит сделать ещё очень-очень много.
 
 
Не прощаюсь. Всегда с вами, Карандаш.
 
Ведение записи начато 23.02.2012 г.
 
P.S.: Стоит помнить, у «пчёлок», как и у нас, время работы – ограничено. Если с помощью robots.txt отсечь ненужную информацию, это повысит их КПД. Боты быстро и легко найдут всё нужное, дойдя «до самых до окраин». А это позволит увеличить полноту и качество анализа собранной информации. Что сразу отразится в поисковых результатах и позиции сайта. В противном случае, робот исчерпает отведённое ему время, бросит незаконченную работу и перейдёт к другому сайту.
 
И да, на страничках поисковиков для веб-мастеров  Гугла и Яндекса есть информация и о проблемных ссылках и о дублях и многое другое. Поэтому, регистрация в инструментах веб-мастеров – весьма желательна. После того, как вы исправите ситуацию с дублями, дубли из поисковиков исчезнут не сразу (Гугл делает тотальную переработку примерно раз в неделю, а Яндекс – раз в 2 недели, но могут пройти и месяцы). Правда, есть средства для ускорения – о них можно прочесть на страничках веб-мастеров. Машины – не люди, с ними проще.
 
P.P.S.: В последнее время меня замучил Microsoft bingbot, который всё время пытается проиндексировать несуществующий в Drupal каталог «images».
# Обход «глюка» Microsoft bingbot: запрет индексации несуществующего каталога
Disallow: /images/
Disallow: /?q=images
 
 
Дополнение от 18-10-2016
 
         В 2015 году Гугл изменил подходы к индексированию сайтов, затребовав доступ к картинкам и скриптам. Мои рекомендации по изменению настройки в robots.txt вы можете прочесть Здесь. Но, уже в 2016 году Друпал в версии 7.50 наконец-то прислушался и внёс эти коррективы. Т.е., вы можете (если вам лень писать самому) скопировать эти настройки из инсталляционного пакета Друпал версии от 7.50 и выше.
 
         Для Друпал 7:
В этой версии исчезли служебные страницы «/logout/», вместо них теперь «/user/logout/». Соответственно, надо сделать правку, если вы хотите закрыть доступ для индексации этой информации. (В стандартном пакете Друпал 7 он уже закрыт.)
Disallow: /user/logout/
Disallow: /?q=user/logout/
 
Появились новые служебные страницы, начинающиеся на «/admin/». Плюс, сама страница «/admin». В стандартном пакете Друпал они все «закрываются», кроме, как ни странно, самой административной страницы…  Рекомендую её закрыть.
Disallow: /admin$
Disallow: /?q= admin$
 
Ну и, как всегда, разработчики забывают (не успевают?) закрыть доступ к дополнительным файлам, появившихся в новой версии. Вот, дополнительный список:
#######
# Закрываем файлы, которые забыли закрыть в Drupal 7
#
Disallow: /.gitignore$
Disallow: /web.config$
Disallow: /authorize.php$
Disallow: /index.php$
Disallow: /COPYRIGHT.txt$
Disallow: /README.txt$
 
 

Comments

Thank you, quite nice post.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer