Сергей Антонов - Личный Блог
личный блог Сергея Антоноваинформация о создании сайтов, поисковой оптимизации и продвижении сайтов  »   Сегодня 11 марта, четверг

Как создать seo-дружественный (SEO Friendly) сайт, в котором контекст загружается из базы данных, с системой управления контентом, разработанный на ASP.NET. Есть несколько основных моментов при построении такого сайта, которые стоит учитывать, если ориентироваться не только на функциональность, но и на продвижение в поисковых системах.

ASP.NET предлагает мощную серверную среду программирования, которая, как выясняется, позволяет не только строить серьёзные проекты с разветвлённой логикой, но и выполнять эти проекты в соответствии с основными стандартами SEO. Основными элементами, ответственными за решение проблемы «дружественности» сайта на ASP.NET являются:

  • Master Pages
  • HTTP Modules
  • HTTP Handlers
  • Event Handlers

Master Pages

Страницы Мастер (Master Pages) – это комплект элементов и средств, которые наделяют нас возможностью строить устойчивый интерфейс сайта, с возможность оперативно изменять этот интерфейс для всего сайта, редактируя его элементы в одном и том же файле (или нескольких файлах). Master Page позволяет разделить Аппликационный и Презентационный слои.
Каким же образом использовать Страницы Мастер, чтобы не потерять их функциональность и при этом не забыть об оптимизации? Последовательность действий может быть такой:

  • Создать Веб Сайт из Меню Проекта
  • Добавить Страницу Мастер, выбрав Add Item (к этому времени неплохо иметь готов шаблон HTML).

Если вы планируете использовать на сайте несколько принципиально разных шаблонов, необходимо создать несколько Master Pages.

После добавления Мастера в проект, необходимо решить, какая часть сайта будет статична (в большинстве сайтов это – верхнее и/или боковое меню, представляющие навигацию по сайту)
После создания Master Page, нужно добавить Страницы Контента (Content Pages). Движок ASP.NET, в процессе рендеринга страницы будет комбинировать Страницы Контента и Страницы Мастер, и результат этих комбинаций увидит пользователь.

Поскольку нам нужен сайт с Системой Управления Контентом, мы используем только одну Страницу Контента в примере, приведённом ниже.


<%@ Page Language=»C#» MasterPageFile=»~/InnerPage.master» AutoEventWireup=»true» CodeFile=»Default5.aspx.cs» Inherits=»Default5″ Title=»SEO-Friendly» %>
<asp:Content ID=»ContentLeft» ContentPlaceHolderID=»Left» Runat=»Server»>
</asp:Content>
<asp:Content ID=»ContentMiddle» ContentPlaceHolderID=»Middle» Runat=»Server»>
<div class=»bCrumb»><asp:SiteMapPath ID=»bCrumb» runat=»server»>
</asp:SiteMapPath></div><div class=»Content» runat=»server»></div>
<asp:SiteMapDataSource ID=»CrumbSource» runat=»server» StartingNodeUrl=»~/Default.aspx» />
</asp:Content>

Создание Title страницы и тегов Meta динамически в Страницах Контента в ASP.NET

Первичными элементами SEO являются Title страницы и теги META. Эти элементы должны быть уникальны для каждой страницы, следовательно необходимо создать систему динамической реализации этих элементов.

Для обновления тегов meta на Страницах Контента, необходимо убедиться в наличие доступа к элементам Master Page:

<%@ MasterType VirtualPath=»~/MainLayOut.master» %>

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

public virtual String MetaKeyword {
get {
_MetaControl = (HtmlMeta)this.Page.Header.FindControl[“MetaKeyword”]
return (_MetaControl.Content);
}
set {
_MetaControl = (HtmlMeta)this.Page.Header.FindControl[“MetaKeyword”];
_MetaControl.Content = value;
}}

Вышеприведённый код позволяет установить или получить значение мета тега «keyword». Для тега должен быть приписан ID и он должен быть помечен как runat=server:


<meta name=»keyword» content=»Keyword1, Keyword3″ id=”metaKeyword”>

На страницах контента таким образом мы сможем установить title и теги мета на основе запрашиваемого контента:


protected void Page_Load(object sender, EventArgs e)
{
Master.MetaKeyword = «Keyword1, Keyword2, Keyword3″;
Master.MetaDescription = «»;
this.Header.Title = «Welcome to ASP.NET CMS Websites»;
}

Виртуальные страницы / SEO-дружественные УРЛы (SEO Friendly URL)

Предположим, что у сайта следующая структура меню:

  • Создание сайтов
  • Раскрутка сайтов
  • Дизайн Flash

По умолчанию в ASP.NET навигация осуществляется через строку запроса (querystring) и при шелчке по ссылке «Создание сайтов» должно открыться что-то вроде «services.aspx?WebsiteDevelopment». Мы попробуем содать нечто более удобоваримое для поисковой машины. Причём в панеле CMS (панель Системы Управления Контентом) можно предусмотреть опцию для приписания каждой странице произвольного URL (как это делается, например в WordPress).

Привязываем виртуальные УРЛы и реальные УРЛы в базе данных или в файле XML.

<SEOURL>
<URL name=»services.aspx?WebsiteDevelopment» VUrl=»offshore_cms_development.aspx»></url>
<URL name=»services.aspx?SEO» VUrl=»offshore_SEO.aspx»></url>
</SEOURL>

Далее, пишем HTTPModule для обработки виртуальных URL и притягивания контента из реальных URL.

1. Создаём Отдельный Проект по типу Class Library
2. Добавляем класс, который наследует HTTPModule


namespace URLHooking
{
public class PageSource : IHttpModule
{
public PageSource(){
 

 

 

Теперь сохраняем проект как DLL.

Далее, конфигурируем этот DLL в качестве HTTPModule в проекте нашего сайта

1. Открываем Web.Config в проекте сайта
2. В разделе Configuration / System.web помещаем конфигурацию


<httpModules>
<add name=»PageSource» type=»URLHooking.PageSource, URLHooking»/>
<!– name=”Class Name” type=”NameSpace.Classname, AssemblyName” –>
</httpModules>

Компилируем проект.

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

Постбэки (Postbacks)

Следует избегать, где возможно использования Постбэков. Например, ваш контент находится в панели ASP. Чтобы отобразить контент вы используете кнопку и захватываете «click event» в code behind, затем вы изменяете свойство панели на visible=true, как только кнопка нажата. Спайдеры поисковых систем не умеют щёлкать кнопками. В нашем случае можно использовать передачу параметра через URL.

Viewstate

Инпут Viewstate может также стать помехой при индексации. Если посмотреть на код большинства аппликаций ASP.NET, можно увидеть следующее:
<input type=»hidden» name=»__VIEWSTATE» id=»__VIEWSTATE» value=»/wEPDwUBMA9kFg…» />
Значение этого поля растёт вместе с клиентской сессией и порой достигает гигантских размеров. Это может повлиять как на ранжирование страницы, так и на индексацию в целом. В добавок к этому у страницы не будет постоянного размера, что видимо не есть хорошо в процессе робото-ползания.

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

Использованы материалы http://www.macronimous.com

Расскажите друзьям:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogosphere News
  • MySpace
  • StumbleUpon
  • Technorati
  • LinkedIn
  • Twitter

по теме:

Опубликовать Комментарий

Важно:Обратите внимание: Модерация комментариев включена. Ваш комментарий будет опубликован после прохождения модерации.

  ИСКАТЬ НА САЙТЕ  
 

RSS Feed
Page copy protected against web site content infringement by Copyscape
Все права защищены - SergeiAntonov.com
При использовании любых материалов с сайта, ссылка на сайт sergeiantonov.com обязательна.
Карта Сайта