Заметки разработчика

О проблемах с индексацией сайтов.

На Форуме о поисковых системах с завидной регулярностью появляются десятки тем с названиями "Мой сайт выпал из индекса!", "В индексе осталось 4 страницы" и т.п. Все они посвящены выпадению сайта из индекса (а соответственно и из выдачи) поисковых систем. Т.к. в основном данная ситуация характерна для Яндекса, сразу следует совет: "Пиши Платону!". Платон Щукин – собирательный образ, коллективный псевдоним техподдержки Яндекса, именем которого обычно подписывается саппорт в ответ на гневные письма вебмастеров. :) Ничуть не преуменьшая "заслуг" Яндекса в подобных ситуациях, все же отметим, что не менее половины подобных проблем вызваны ошибками самих вебмастеров и оптимизаторов. Самый распространенный случай – когда Яндекс определил главным зеркалом сайт www.site.ru (или главное зеркало было прописано таким образом в директиве Host в robots.txt), а далее вебмастер установил 301 редирект с него на site.ru (без www). Что же происходит в таком случае?

Основной индексирующий робот пытается проиндексировать сайт по адресу главного зеркала (www.site.ru), т.к. дополнительные зеркала не индексируются и в выдаче не участвуют (Яндекс декларирует это, хотя на самом деле так бывает далеко не всегда). Однако при попытке закачать страницы сайта (с www), робот получает безусловное перенаправление на сайт site.ru (уже без www). Такое перенаправление называют 301 или серверный редирект, т.к. выполняется оно на стороне сервера, а не пользователя. Данный редирект обозначается как Moved Permanent (ресурс перемещен навсегда) и обрабатывается роботом поисковой системы следующим образом: страница с которой установлен редирект не индексируется, а страница на которую он перенаправляет посетителя индексируется и "заменяет" собой первичную страницу. Характеризуя данное перенаправление, иногда используют термин "склейка", чтобы подчеркнуть то обстоятельство, что две страницы существуют неразрывно друг от друга. Продолжая попытки проиндексировать сайт, робот в соответствии с безусловным перенаправлением (на то оно и безусловное!) попадает на site.ru, который является дополнительным зеркалом (по мнению ПС) и индексироваться не должен. Круг замкнулся, при этом соединение скорее всего будет разорвано по таймауту, а страницы сайта не проиндексируются. Ниже мы рассмотрим, для чего нужны robots и 301 редирект, а также основные нюансы, влияющие на индексацию.

Robots.txt.

Зачастую вебмастера называют данный файл robot.txt, однако это неправильно и называться он должен именно robots. Данный файл описан стандартом опубликованным на http://www.robotstxt.org/wc/norobots.html и располагается в корневом каталоге сайта. Его "понимают" все роботы поисковых систем. Кроме того, Яндекс добавил поддержку расширенного набора функций. Основной его задачей является управление индексацией сайта, т.е. запретом или разрешением индексации любых разделов или файлов, например папки cgi-bin или других служебных разделов. Если файла не существует, или он не текстовый, или при его скачивании сервер отдает любой HTTP-код отличный от 200, или объем файла превышает 256 Кбайт – считается, что robots.txt полностью разрешающий.

Пример robots.txt:
User-agent: *
Disallow: /cgi-bin/
Disallow: /images
Disallow: /test.htm
Host: www.devnotes.ru

Пример robots.txt:
User-agent: *                 # Общий блок для всех поисковых систем
Disallow: /cgi-bin/
Disallow: /images
Disallow: /test.htm

User-agent: yandex        # Блок для Яндекса
Disallow: /cgi-bin/
Disallow: /test.htm
Host: www.devnotes.ru

Как видим, структура файла состоит из нескольких блоков. Каждый блок используется роботом своей поисковой системы, его название передается в поле User-agent. После названия поля обязательно должно быть двоеточие, между директивой и параметром ставится пробел. Знак # обозначает комментарий, все символы после этого знака до перевода строки не учитываются. Путь к файлам и папкам указывается относительно корневого каталога сайта. Если запрещается папка – после ее названия ставится слэш. Если слэш отсутствует, как в случае с images, запрещается индексация всех папок и файлов, начинающихся в данном примере с images. Для Яндекса создается блок с User-agent: Yandex, для Гугла – User-agent: Google. Блок User-agent: * используется роботами всех поисковых систем. Если робот не находит блок для своей ПС – выполняются общие правила, указанные в блоке User-agent: *. Блоки между собой разделяются пустым переводом строки, внутри блока пустые переводы строки недопустимы.

Директива Disallow запрещает индексировать перечисленные в ней файлы или папки, команда Allow – разрешает. Если параметр директивы указан так: Disallow: / , данная конструкция полностью запрещает индексацию сайта. Аналогично, Allow: / полностью разрешает индексацию. Однако существует несколько исключений. Так, пустая директива Disallow: (Disallow без параметров) разрешает индексацию сайта, а пустая директива Allow – запрещает. Кроме того, если существует несколько директив, конкурирующих между собой (например, первая запрещает, а вторая разрешает индексацию одного и того же файла), то выполнена будет та, которая находится ближе к началу соответствующего блока.

Директива Sitemap: указывает на местоположение карты сайта в формате .xml. В качестве параметра указывается абсолютный путь к файлу, включая http://. Например:

Sitemap: http://site.ru/sitemap.xml

Директиву Host: "понимает" только робот ПС Яндекс, поэтому если в файле присутствует блок для Яндекса – эту директиву нужно указывать именно в нем. Однако нет гарантий, что ее не распознает какая-либо иная поисковая система, поэтому возможно дублировать ее в общем блоке. Директива должна располагаться самой последней, если другие команды в блоке отсутствуют – желательно между строками User-Agent и Host вставить пустую команду Disallow:. Если блок для Яндекса отсутствует, директиву нужно поместить в блок с User-agent: *. Соответственно, роботы других ПС выполнят все правила до команды Host без каких-либо последствий (после чего обработка файла завершится), а робот Яндекса – еще и команду Host.

Проверить правильность составления файла можно в панели вебмастера Яндекса и панели инструментов Google.

301 редирект.

Многие сталкивались с такой ситуацией: при вводе адреса сайта с www (www.site.ru) его PageRank (PR) отличается от PR сайта без www (site.ru). Дело в том, что с точки зрения поисковых систем – это два разных адреса, на которых теоретически могут располагаться разные сайты, соответственно и PR у них может быть разным. Точно также, главная страница одного сайта может быть проиндексирована по нескольким адресам: www.site.ru, www.site.ru/index.htm, site.ru, site.ru/index.htm. В примере показаны варианты только в формате .htm, но сказанное относится и к другим форматам. Как же ПС понимают, что все четыре адреса ведут на одну и ту же страницу? Для этого поисковые системы анализируют контент страниц и в случае его совпадения считают одну страницу главным зеркалом, а вторую – дополнительным. В случае с Яндексом используется робот-зеркальщик, который получает директиву Host из файла robots.txt, тем самым он может "склеить" сайты с www и без www. Однако, не всё так гладко. Представители Яндекса неоднократно утверждали, что директива Host носит исключительно рекомендательный характер, ее результата можно ожидать достаточно длительное время (иногда – более полугода), существуют и своеобразные долгожители – сайты, которые не могут склеиться несколько лет. К тому же, даже имея прописанный host в роботсе – вовсе не факт, что робот-зеркальщик Яндекса сделает главное зеркало таким, какое нужно вебмастеру. Здесь необходимо отметить, что в Гугле ситуация значительно лучше – достаточно при регистрации сайта в панели инструментов Google выбрать, как будет индексироваться сайт, с www или без www.

Актуальность определения главного зеркала заключается в следующем. Как уже было описано, site.ru и www.site.ru для ПС – это разные адреса. Соответственно бэклинки, которые ведут на site.ru не учитываются для www.site.ru и наоборот. Т.е. весь ссылочный вес при смене главного зеркала теряется на некоторое время, необходимое для склейки старых ссылок с новым главным зеркалом. Обычно это время составляет около трех месяцев, на это время сайт может сильно упасть в выдаче, если не компенсировать потерянное ссылочное. Для коммерческих фирм, ведущих деятельность в основном через Интернет это аналогично краху. Причем, многие оптимизаторы удивляются, что избежать этого можно достаточно просто – заранее установив 301 редирект в .htaccess.

Смысл безусловного перенаправления был описан в начале данной статьи, теперь перейдем к его особенностям и реализации. При этом, желательно еще до того, как сайт выложен на хостинг определиться, какое же из зеркал сделать главным. И уже исходя из этого устанавливать редирект, навигацию по сайту (если используются абсолютные пути) и внешние ссылки. Техническая часть как правило трудностей не вызывает, за исключением некоторых CMS, в которых кроме реализации функции перенаправления например с site.ru на www.site.ru закладываются достаточно сложные логические конструкции. Для установки редиректа необходимо открыть в текстовом редакторе файл .htaccess (это не опечатка, имя файла начинается с точки и не содержит расширения!!!). Данный файл располагается в корневом каталоге сайта и управляет доступом, поддерживаемыми форматами файлов (какое расширение с чем ассоциировано) и некоторыми другими функциями. Однако, чтобы не уходить от темы – будем рассматривать исключительно функции перенаправления на примере данного сайта.

Пример файла .htaccess:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^devnotes\.ru
RewriteRule ^(.*)$ http://www.devnotes.ru/$1 [R=permanent,L]

Главным зеркалом выбрано www.devnotes.ru, на которое и ведет редирект. Здесь установлено так называемое "перенаправление с шаблоном". Смысл его такой: если набрать в адресной строке например http://devnotes.ru/about.htm, то пользователь будет автоматически перемещен на ту же страницу, только с www – http://www.devnotes.ru/about.htm. То же самое происходит и для роботов поисковых систем. Работоспособность перенаправления после установки проверяется таким же способом.

В дополнение необходимо прописать то же главное зеркало в файле robots.txt и выбрать его в панели инструментов Google. В случае если в разных местах главное зеркало не будет одним и тем же – сайт может полностью выпасть из поискового индекса.

Возвращаясь к вопросу о том, почему файл .htaccess должен быть выложен на хостинг вместе с сайтом можно пояснить следующее. При индексации робот ПС индексирует только ту страницу, на которую ведет редирект, а страницы с которой установлен редирект для поисковой системы формально не существует. Поэтому зеркальщик никогда не сможет сменить главное зеркало, пока установлен редирект, ведь у него не будет возможности даже проиндексировать второстепенное зеркало.

 

Главная

О сайте

Методы оптимизации

SEO оптимизация

Бесплатная раскрутка сайта

Аудит сайта

Статьи

Продвижение сайтов, портфолио

301 редирект и файл robots.txt

Карта сайта





Назад

Главная

Copyright © 2008 Все права защищены. Дизайн и верстка Yeugeny A. Samburov
Rambler's Top100