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&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&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 …
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!

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.