Rose debug info
---------------

Еще немного SEO оптимизации для ASP.NET

Обычно, по умолчанию так сказать, мы ловим ошибку 404 на IIS, или же настройками web.config:

<customErrors defaultRedirect="GenericError.htm" mode="On">
<error statusCode="404" redirect="404.html"/>
</customErrors>

Однако, этот подход имет проблему:

Сервер сначала возвращает 302 (redirect), а затем 200 (ОК). Это плохо для SEO, и гугл с яндексом в своих webmaster tools указывают на это как на проблему.

Итак, задача стоит, сделать так, чтобы ASP.NET возвращала HTTP 404 (not found) в ситуации когда страница не найдена, а не просто перенаправляла на страницу ошибки с кодом 200 (OK).

Способ 1. Поменяем web.config и сделаем перенаправление не на статический html файл, а на .aspx

<customErrors defaultRedirect="GenericError.htm" mode="On">
<error statusCode="404" redirect="404.aspx"/>
</customErrors>

Добавим в Page_Load этой 404.aspx страницы следующий код:

protected void Page_Load(object sender, EventArgs e)
{
Response.StatusCode = 404;
}

Смотрим что из этого вышло:

Отлично, теперь сервер возвращает 404 (page not found), но все же не так хорошо: сервер выдает два ответа; 302 (перенаправление) и уже потом 404. Лучше бы оставить только один ответ 404, без перенаправлений.

Способ 2. Вообще уберем из web.config упоминания о CustomErrors, а в global.asax, наоборот, добавим новую логику: поймать 404 ошибку и перенаправить на нашу страницу об ошибке:

protected void Application_Error(object sender, EventArgs e) 
{
Exception ex = Server.GetLastError();
if (ex is HttpException) 
{
if (((HttpException)(ex)).GetHttpCode() == 404)
Server.Transfer("~/404.html");
}
// Код для общих ошибок
Server.Transfer("~/GenericError.htm");
}

Смотрим что получилось:

Здорово! Теперь сервер без перенаправлений сразу отдает нашу страницу Not Found с кодом ошибки 404.

Вообще, для серьезных интернет-проектов стоит держать в штате своего SEO-оптимизатора, или отдавать продвижение сайтов профессионалам на аутсорс, т. к. профильные компании, как правило, могут предложить еще и дополнительный комплекс услуг, таких как контекстная реклама сайтов, партизанский маркетинг, вирусная реклама или хостинг.

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

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

1 комментарий
Андрей 2011

А ето вообще супер. Я сам верстальщик, програмист asp.net Framework 3.5
Таких тонкостей незнал.
Спасибо. Буду иметь ввиду.