UrlRewritingNet.UrlRewrite / Global.asax – Url amigável com .NET

Posted by Leticia Verta | Posted in .NET | Posted on 08-02-2010-05-2008

1

Após um workshop genial de SEO hoje, ver um amigo fazendo ctrl+c ctrl+v de páginas só para personalizar url e etc., vem um post sobre urls amigáveis, que nada mais é que uma técnica onde reescrevemos as urls antes que o que foi solicitado seja buscado no servidor, com o propósito de ter urls bem aceitas pelos motores de buscas, além de facilitar a “navegação manual” do usuário.

Eu, pessoalmente, uso um componente open source pra fazer isso em .NET, o UrlRewritingNet.UrlRewrite (só testei com o framework 2). Pra usar é absurdamente prático!
É necessário referenciar o UrlRewritingNet.UrlRewrite na sua aplicação e depois configurar devidamente no .config como explica na documentação (adicionar uma section e um httpModule do componente, além dos redirecionamentos desejados):

<?xml version="1.0"?>
<configuration>
 
    <configSections>
      <section name="urlrewritingnet"
               requirePermission ="false"
               type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"  />
    </configSections>
 
    <appSettings />
    <connectionStrings />
 
    <urlrewritingnet
      rewriteOnlyVirtualUrls="true"
      contextItemsPrefix="QueryString"
      defaultPage = "default.aspx"
      defaultProvider="RegEx"
      xmlns="http://www.urlrewriting.net/schemas/config/2006/07" >
      <rewrites>
        <add name="rwProduto"  virtualUrl="^~/(.*)/(.*)_(.*).html"
             rewriteUrlParameter="ExcludeFromClientQueryString"
             destinationUrl="~/DetalhesProduto.aspx?categoria=$1&amp;produto=$3"
             ignoreCase="true" />
      </rewrites>
    </urlrewritingnet>
 
    <system.web>
        <compilation debug="true"></compilation>
        <authentication mode="Windows" />
        <httpModules>
          <add name="UrlRewriteModule"
               type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
        </httpModules>
    </system.web>
 
</configuration>

Reparem no redirecionamento que eu criei como exemplo …

     virtualUrl="^~/(.*)/(.*)_(.*).html"
     destinationUrl="~/DetalhesProduto.aspx?categoria=$1&amp;produto=$3"

Na url virtual eu recebo três variáveis e na de destino eu estou usando apenas 2 (o primeiro e o último), ou seja:

Pro usuário ->

www.ecommercerelaxos.com.br/celulares/celular-bonitao-mto-mais-que-barato_5394.html

$1 = celulares; $2 = celular-bonitao-mto-mais-que-barato; $3 = 5394

Pro servidor ->

www.ecommercerelaxos.com.br/DetalhesProduto.aspx?categoria=celulares&produto=5394

Eaí você trata as querystrings normalmente em DetalhesProduto. Excelente, heim?

Outro método tão simples quanto e sem precisar adicionar nada além de uma Global Application Class (.asax) e tratar a url, digamos que, como uma string. Assim você reescreve a url apenas pra chamada no servidor.

void Application_BeginRequest(object sender, EventArgs e)
{
     var httpContext = HttpContext.Current;
     var urlAmigavel = httpContext.Request.Path; 
 
     httpContext.RewritePath(String.Concat("relapsos.aspx?urlAmigavel=", urlAmigavel));
}

Além de ter o ASP.NET MVC Framework, que já trabalha com as urls bonitinhas de natureza … :P

Só queria deixar claro que pra todas as linguagens há um meio de fazer tais urls amigáveis, afinal, não há lógica em fazer um site “dinâmico” e criar as páginas na mão (?!?!?)
Caso fique alguma dúvida, fica aqui o exemplo com UrlRewritingNet.UrlRewrite e o com a Global.asax, ou entrem em contato.

Beijos! ;)

Comments posted (1)

Hummmm interessante.

Só é um desperdício fazer coisa boa com tecnologia ruim, no caso os WebForms, ahahahaha.

Parabéns criança, ficou bacana!

Att,
V. Quaiato.

Write a comment

Spam protection by WP Captcha-Free