SEO para ASP.NET – Parte 2

Continuando o artigo sobre SEO para programadores ASP.NET.Veja a parte 1

SEO Urls amigáveis:Reescrita de URL

“Spiders”(motores de busca) web não gostam de querystrings nas URLs.Se você está trazendo dados de banco é muito comum usar querystrings como ShowProduct.aspx?id=2445.Apesar dessa URL parecer muito lógica para programadores,ela não é amigavel para usuarios e geralmente não é bem rankeada nos sites de busca.Você precisa usar URLs separadas por hifens.Então ao invés de ShowProduct.aspx?id=2445 deveria ser algo como:,em>My-ProductName.aspx.Urls que contenham palavras-chave,são faceis de ser lidas por humanos e são melhores rankeadas nos mecanismos de busca.Site com URLs SEO amigaveis,são mais seguros porque você pode esconder os IDs ou mesmo as extensões do arquivo.
Reescrita de URL em ASP.NET,pode ser implementada de várias maneiras,diretamente na página,no arquivo Global.asax,usando Custom HTTP Handlers ou HTTP Modules,diretamente no servidor etc
Reescrita de URL no código da página é uma maneira dificil,mas pode ser util em alguns cenários.Para página com URL amigável,use o método Server.Transfer, para chamar a página real.Então nesse caso,você deve na verdade ter uma página com URL amigável como um arquivo e colocar somente uma linha de código para a execução da transferência:
Reescrita de URL no Global.asax usa o método RewritePath no evento Application_BeginRequest.A implementação pode ser assim:

void Application_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
if (app.Request.Url.AbsolutePath.StartsWith(“http://www.example.com/Friendly-Page/”))
{
app.Context.RewritePath(“/UnfriendlyPage.aspx?id=423874”);
}
}

Se você estiver interessado em reescrita de URL com HTTP Modules ou HTTP Handlers,de uma olhada no tutorial URL Rewriting in ASP.NET, onde ambos os métodos são explanados.
Para atingir resultados rapidamente você pode tentar http://urlrewriter.net .É um Rewriter URL open source para ASP.NET escrito em C#,fácil de usar e usado em sites grandes e pequenos.

ViewState e SEO no ASP.NET

Existe uma especulação de que motores de busca lêem somente um número limitado de bytes para cada página (os primeiros 100k da página).O valor do ViewState é uma string apresentada como HiddenField no lado cliente.Se você tiver um ViewState grande no inicio da página,então é possível que os spiders evitem o conteúdo real da sua página.Isso pode prejudicar sua posição nos rankings de busca.Uma solução simples é desativar o ViewState se você não precisar dele,ou pelo menos não usa-lo para cada controle da página.Se você realmente precisa do ViewState há uma nova opção no web.config para colocar na página:

Seguindo a mesma idéia,você deve remover qualque HTML,JavaScript,CSS desnecessário para fazer com que a página fique menor.Você deve e pode usar o Javascript e o CSS quando necessário,mas chame-os de um arquivo externo.Isso também reduz trabalho repetitivo.
Entretanto,essa conversa sobre limitação de leitura das páginas,é somente especulação,pessoalmente eu não acredito que isso seja inteiramente verdade.Mas os motores de busca,com certeza tentam agradar seus usuários e usuários gostam de páginas rápidas.Páginas que carregam rapidamente serão melhores rankeadas.Tempo de carregamento é um dos fatores de ranking.Removendo ou reduzindo ViewStates,deletanto HTML sem uso,e comentários HTML,movendo javascripts e CSS para arquivos externos e deixando na sua página somente conteúdo útil,irá aprimorar seu ranking direta e indiretamente.O último passo seria validar se HTML em http://validator.w3.org.

SEO Paging Amigável com GridView,Repeater e outros controles de dados

Paging padrões do ASP.NET usam postback e javascript.Spiders checam os links e geralmente evitam JavaScript,então usar os Pagings padrões não é uma opção de SEO amigável.A solução poderia ser usar custom paging para o gridView,repeater e outros controles.

Novas caracterisitcas SEO no ASP.NET 4.0

Manipulação direta das tags Description e Keyword
ASP.NET 4.0 tem novas opções para mudar as tags meta Keywords e description.Claro,que você já pode fazer isso em qualquer versão mais antiga do ASP.NET adicionando a tag “runat=server” para a tag meta description ou meta keyword e depois acessando-as no código do servidor,a maneira do ASP.NET 4.0 é mais simples e rápida,foram introduzidas as novas propriedades MetaDescription e MetaKeyWords no objeto Page,usadas como no código abaixo:

Page.MetaDescription = “This is my great page”;
Page.MetaKeywords = “great,page”;

Response.Redirect Permanent para redirecionamento permanente 301
ASP.NET 4.0 inclue outra interessante caracteristica SEO.O método Response.Redirect retorna “302 Temporay Redirection”.Para usar redirecionamento 301 com antigas versões do ASP.NET eram mais complicado,com o ASP.NET 4.0 ficou bem mais simples:

Response.RedirectPermanent(“New-Page.aspx”, true);

Lidando com http://www.subdominio

Esse é um problema comum.Como www é apenas um subdominio,motores de busca podem enxergar conteúdo duplicado e dividir a reputação entre http://www.exemplo.com/Sua-Pagina.aspx e exemplo.com/Sua_Pagina.aspx. É muito melhor ter um único link na primeira página,do que dois na trigésima.Permita somente um link para cada conteúdo.Se você descobrir que visitantes podem navegar para a mesma página por diferentes URLs,use o redirecionamento 301 para focar todo o ranking para somente uma URL.

AJAX e SEO

Ajax usa JavaScript e motores de busca não gosta de JavaScript.Então,seu site em AJAX tem um grande potencial para problemas.Possivelmente seu conteúdo não será indexado.Você pode desativar Javascript no seu browser e tentar acessar todo o conteúdo do site.Se você não puder visualiza-lo sem Javascript,os spiders também não poderão.
Possiveis soluções são SiteMap com links para todo o conteúdo,ou caminhos adicionais de navegação que usem links estáticos,ou fazer seu conteúdo inicialmente ser carregado sem JavaScript.

SEO Problemas de sessão

Por padrão,ASP.NET usa cookies para armazenar sessões.Como spiders web geralmente não aceitam cookies é possível que algo de seu conteúdo seja invisivel se variaveis de sessões forem requiridas para mostra-lo.Você pode mudar as configurações para armazenar sessões na URL(você pode fazer isso no web.config setando o parâmetro cookieless de sessionState para true)mas é ainda pior porque a popularidade do link será dividida em muitas URL diferentes com conteúdo duplicado.Tem uma opção pra setar o parâmetro cookieless para “AutoDetect”.Isso significa que o ASP.NET irá usar cookies se o browser suportar,então isso também não resolve o problema do SEO.
A solução poderia ser,setar o parâmetro cookieless para false,e disponilizar uma maneira de os spiders encontrarem todo o conteúdo através de simples links.

Conclusão

Como você viu,é muito fácil fazer um site em ASP.NET invisivel para os motores de busca .Só use buttons ou linkbuttons para navegação e ninguém irá encontrar seu site pelo google .Por outro lado,para receber o máximo de tráfego dos motores de busca,você precisa seguir sua regras e ser mais amigavel para os motores de busca.Eu espero ter explicado bem alguns conceitos básicos de SEO.

Finalmente,todas essas técnicas e truques são irrelevantes se você não tiver conteúdo de qualidade dentro de sua tag .Se o seu conteúdo for bom,pessoas irão linkar para sua página naturalmente.Links de outros sites para sua página são o fator mais importante para o ranking.Até a próxima!

SEO para ASP.NET – Parte 1

Todo desenvolvedor ASP.NET (ou pelo menos a maioria deles) deseja ter muitos visitantes em seu site.Google,Yahoo e outros mecanismos de busca podem lhe conseguir muitos visitantes especialmente se seu site for mostrado nas primeiras páginas.E vice-versa,se o seu site é mostrado na trigésima página ou nem for indexado você não vai ter nenhum resultado dos motores de busca.Como todo mundo quer ganhar  a primeira página há uma concorrência forte e você tem que se preocupar com cada fator que afeta o quanto sua página será amigável para os mecanismos de busca.

Existem mais de 100 importantes fatores usados pelos mecanismos de buscas para rankear as páginas.A maioria deles são somente especulações,uma vez que o Google,Yahoo e outros não querem revelar seus algoritmos de busca.Além,disso seus algoritmos são mudados frequentemente,(centenas de vezes anualmente),para aprimorar  a experiência do usário e melhorar os resultados das buscas.Nem mesmo o Google tem capacidade de manualmente mudar o ranking de uma página se ela achar que alguma deveria ser melhor ou pior rankeada.Por isto,SEO(Search Engine Optimization) é uma área muito dinâmica,mas basicamente as coisas mais importantes são sempre as mesmas.

Crie títulos únicos para as páginas

Toda página de seu site,deve ter um título único.O título deve ser pequeno,descritivo,significativo,conter palavras-chave e relevantes ao conteúdo da página.Não coloque frases repetidas,como o nome da empresa no inicio de cada título.Deixe suas informações mais relevantes aparecerem primeiro.A tag title,pode ser editada em tempo de design,mas você pode edita-lo usando a propriedade Page.Title com um código como este:

MyPageHeader.InnerText = “This Is My Catchy Header”;

Quando alguém usa a busca do Google,os termos da pesquisa são mostrados em negrito nos resultados da busca.Por isto,você precisa colocar palavras-chave no título para ter notoriedade e assim receber mais cliques.Claro,para atrair visitantes humanos seu título deve agrada-los também,não somente aos motores de busca.Você não deve somente listar palavras-chave sem sentido no título.Ao invés disso,deixe seus títulos com descrição precisa de cada página e você estará bem tanto com motores de buscas quanto com internautas.Não use títulos longos porque os motores de busca irão corta-los de qualquer maneira.Mantenha o título com menos de 65 caracteres.

Use as meta tags description e keyword

As tags description e keyword foram muito importantes para o SEO no passado,mas elas foram amplamente abusadas.Hoje em dia a meta tag keyword está praticamente em desuso,mas a meta tag description ainda é importante.Apesar de esta tag não melhorar suas perfomance no ranking de busca diretamente,indiretamente ela traz beneficios.Google geralmente usa a tag meta description quando mostra as curtas descrições do site nos resultados da busca.Então,se você criou alguma tag description,você pode atrair mais visitantes mesmo se você não estiver nos primeiros resultados da busca.Coloque descrições únicas para cada página.Assim como o título,você pode mudar a tag description em tempo de design ou via código do servidor:

protected void Page_Init(object sender, EventArgs e)
{HtmlMeta metaDescription = new HtmlMeta();
metaDescription.Name = “Description”;
metaDescription.Content = “Short, unique and keywords rich page description.”;
Page.Header.Controls.Add(metaDescription);

HtmlMeta metaKeywords = new HtmlMeta();
metaKeywords.Name = “Keywords”;
metaKeywords.Content = “selected,page,keywords”;
Page.Header.Controls.Add(metaKeywords);
}

Também funcionará se você usar master pages.

Uso da tag H1,

A tag H1 é muito importante, e ao mesmo tempo muito útil para melhorar seus resultados nas buscas.É melhor ainda se esta tag tiver o mesmo conteúdo da tag title.Apenas coloque o mesma palavra-chave,curta e relevante tanto na tag title quanto na H1 e este simples esforço vai aumentar significativamente seu ranking nas buscas.Como qualquer outra tag HTML,você pode pode mudar a tag H1 em tempo de design ou via código do servidor:

<h1 runat=”server” id=”MyPageHeader” ></h1>

Agora você pode manipular a tag H1 com código ASP.NET

MyPageHeader.InnerText = “This Is My Catchy Header”;

É importante lembrar,que as tags <h2> e <h3>
podem sem usadas para sub-cabeçalhos,e a tag <strong> pode ser usada para tornar algumas palavras-chave mais signficantes nos textos.

ASP.NET SEO Redirecionamento de URL

As vezes você precisa mover uma página para outra URL, ou mover o site inteiro para outro dominio.Um exemplo comum,se você atualizar seu site criado em ASP antigo para ASP.NET você precisará mudar as extensões dos arquivos de .asp para .aspx.Se algum visitante vier para o seu link antigo através de mecanismos de busca ou diretamente,ele deve ser direcionado para a nova URL.Há dois possíveis redirecionamentos:

  1. Redirecionamento temporário,retorna a mensagem “302  Found” .Esse redirecionamento deve ser usado somente quando necessário.
  2. Redirecionamento permanente,retorna a mensagem “301 Moved Permanently”,.Esse redirecionamento é usado pelo SEO para tranferir links para novos endereços.

Response.Redirect irá retornar o redirecionamento 302 ,então este não pode ser usado pelo SEO no ASP.NET.Para redirecionar permanentemente use o seguinte código:

Response.Status = “301 Moved Permanently”;
Response.AddHeader(“Location”, “/your-new-url/”);
Response.End();

Esse código é suficiente se você precisar mover uma única página.Mas se você precisa mover o site inteiro é melhor fazer isso no IIS.Vá até as propriedades do antigo site e selecione Home Directory Tab.Escolha,”A redirection to a URL”, e escreva a nova URL no textbox abaixo,como mostra a imagem:

Não esqueça de checar o checkbox, “A permanent redirection for this resource”,para receber o redirecionamento “301”.

Evite usar PostBacks

Alguns programadores,colocam Botões ou LinkButtons no webform e usam Response.Redirect,para navegar para outras páginas no evento de clique.Isto é um problema,porque os controles ASP.NET usam JavaScript para fazer PostBacks.Como “spiders”(motores de busca) web não trabalham com JavaScript muitas páginas não podem ser indexadas,e não irão aparecer nos resultados de busca.Para tornar um página visivel para mecanismos de buscas,tente evitar o uso de PostBacks.Ao invés de Buttons ou Linkbuttons ,coloque uma simples tag <a>.Textos nos links devem ser descritivos,evite links sem sentido como “Leia mais”,”Clique aqui” etc.

Se você precisar usar PostBack,então disponibilize alternativas de navegação,com simples Hyperlinks.Isso pode ser implementado no formulário do SiteMap.Sitemap pode ser uma página que contenha links para todas as páginas do seu site.Quando “spiders” visitarem seu sitemap,eles irão encontrar todas as outras facilmente.

Em breve continuarei com a Parte 2,aguarde.