реклама

Технические аспекты поисковой оптимизации

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

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

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

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

Каждая страница сайта должна иметь постоянный адрес (URL)

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

Сайт должен иметь конечное количество страниц

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

Звучит странно, и не всегда понятно, как на сайте может получиться бесконечное количество страниц? На самом деле достаточно просто. Это может быть новостной календарь, в котором можно выбрать любую дату, как в прошлом, так и в будущем. Или другой пример - потеря идентификатора сессии при передаче его через URI. Каждый раз при обращении сайта будет генерироваться новый идентификатор и соответственно новый URI.

Каждая сущность сайта должна иметь только один адрес

Поисковый робот индексирует страницы по очереди, чем меньшее количество страниц представляет все сущности вашего сайта, тем быстрее все сущности попадут в поисковый индекс. Это особенно актуально, так как поисковый робот индексирует не только ваш сайт, но и другие (возможно, сайты ваших конкурентов). Кроме того, поисковые роботы ограничивают частоту обращения к одному и тому же сайту. Ведь если сайт работает медленно, и каждый запрос страницы сильно нагружает сервер, то поисковая система может просто его задосить (см. DOS атака).

К сожалению, не всегда возможно дать одной сущности только один адрес (URI). Например, таблица с разными сортировками, фильтрами. Но стремится к этому нужно.

Использование атрибута rel="nofollow" у ссылок помогает частично решить это проблему.

Вообще, если у сайта много страниц (десятки тысяч), то добиться индексации их всех не так просто.

Используйте все возможности HTTP протокола

Если страница не найдена, но то верните 404, если страница навсегда перемещена, то верните 301. Делайте так, чтобы в поисковом индексе оказалось как можно меньше “мусорных” страниц. Большинство крупных поисковых систем умеют определять страницы 404 и без правильного кода ответа HTTP, но помочь им все равно стоит. Никто лучше вас не знает, какие страницы должны находится поисковыми системами, а какие нет.

Пример страницы 404 на PHP:

<?php
$r=mysql_query("SELECT title,text,mdate FROM documents WHERE id='".intval($id)."';");
if ($a=mysql_fetch_assoc($r)) {
        // Вывод HTML страницы
        }
else {
header("HTTP/1.0 404 Not Found");
// Вывод страницы 404
        }
mysql_free_result($r);
?>

Возвращайте правильную дату модификации документа

Тут вы поможете не только поисковым роботам, но и всем остальным пользователям. В HTTP запросе есть поле "Last-Modified". В этом поле должна возвращаться дата последней модификации документа. Если документ статический (картинка, HTML страница и т.п.), то веб сервер (например Apache) использует дату модификации файла, но если страница сгенерирована динамически (например PHP скриптом), то веб сервер возвращает текущую дату.

В таких случаях, имеет смысл устанавливать эти поля вручную. Пример на PHP:

<?php
$r=mysql_query("SELECT title,text,mdate FROM documents WHERE id='".intval($id)."';");
if ($a=mysql_fetch_assoc($r)) {
        header("Last-Modified: ".gmdate(strtotime($a["mdate"])));
        // Вывод HTML страницы
        }
?>

Особенно хорош заголовок "Last-Modified" в паре с "If-Unmodified-Since".

Правильно организуйте структуру сайта

Тут конечно все индивидуально, но в целом, любая страница сайта должна быть доступна в 2-3 клика. Если страниц очень много (например, больше 5000 ) то можно и больше.

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

Используйте robots.txt

Если невозможно правильно организовать структуру сайта, то для исключения страниц из поискового индекса можно использовать файлы robots.txt. Например, такая необходимость возникает при использовании программ сторонних производителей, например форума vBulletin (пример robots.txt для форума на базе vBulletin).

Используйте теги <META NAME="ROBOTS">

Наряду с robots.txt, этот мета тег позволяет исключить страницы из поискового индекса, но в отличие от robots.txt, в meta тегах "robots" можно указать не только запрет на добавление страницы в индекс (noindex), но и отдельный запрет на выборку ссылок из страницы (nofollow).

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

Используйте карты сайта - "Sitemaps"

Для ускорения процесса индексации поисковые системы стали использовать файлы со списками страниц сайта - sitemaps. С помощью файлов sitemaps вы можете разом отправить поисковому роботу список всех страниц сайта. Формат файла позволяет установить для страниц приоритеты.

Файлы sitemaps обычно генерирует движок сайта, но в случае если такой функции у движка нет, то это можно сделать сторонними продуктами, например поисковой системой CNSearch.

Помните, если вы не добавили страницу в файл sitemaps, то это не значит что она не будет проиндексирована. Робот поисковой системы все равно найдет страницу по ссылке и добавит ее в поисковый индекс (если на это нет прямого запрета в robots.txt или мета-тегах).

Контролируйте процесс индексации

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

Google Webmaster Central. - http://www.google.com/webmasters/

Яндекс.Вебмастер - http://webmaster.yandex.ru/

Инструментарий

FireBug можно использовать для контроля содержимого HTTP запросов и ответов;

CNSearch (а точнее его индексатор) можно использовать для проверки правильности индексации сайта (Инструкция по установке).

*) В этой статье, под термином "индексация" я понимаю все действия поисковой системы по добавлению страниц сайта в поисковый индекс. Это и поиск страниц, и их загрузка и добавление в поисковый индекс.

© mike
7 апреля 2011 года
www.codenet.ru