ASP .NET - Mapeando URLs Amigáveis


Já ouviu falar em URLs amigáveis ?

Se você acessar o meu site (www.macoratti.net) e navegar pelas categorias vai notar que para cada categoria existe uma URL definida com um código. Assim para a categoria VB .NET você verá a URL : http://macoratti.net/pageview.aspx?catid=1 para ASP .NET você verá : http://macoratti.net/pageview.aspx?catid=3 e assim por diante...

Este tipo de URL esta por toda web e sejamos sinceros não é nada fácil de memorizar e de tratar além de ter um baixo ranking no google.

Não seria possível reescrever URLs para torná-las mais amigáveis ? Isso é possível com ASP .NET ?

Sim, é possível e neste artigo eu vou mostrar como você pode fazer isso usando ASP .NET.

Vamos mostrar que ao invés de :

http://macoratti.net/pageview.aspx?catid=1 podemos ter http://macoratti.net/visual-basic-net

Não ficou melhor ? mais fácil de manter de memorizar e de tratar ?

Além disso ao reescrever URLs para torná-las amigáveis a manutenção das páginas do site fica facilitada quando houver a necessidade de mover páginas entre diretórios virtuais, com isso evitamos a quebra de links para usuários que já realizaram um bookmark destas urls.

Reescrevendo URLs

A ASP .NET, a partir da versão 2.0, fornece uma solução para realizar o mapeamento de URLS estáticas em uma aplicação Web. Assim é possível mapear uma URL antiga para um nova URL usando o arquivo web.config sem termos que escrever uma única linha de código.

Para usar o mapeamento de URL fornecido pela ASP .NET basta criar uma nova seção definida como urlMappings no interior da seção System.web do arquivo web.config da sua aplicação web, e definir o mapeamento para a nova URL.

Veja abaixo um exemplo :

<urlMappings enabled="true">

   <add url="~/pageview.aspx?catid=1" mappedUrl="~/visual-basic-net" />
   <add url="~/pageview.aspx?catid=3" mappedUrl="~/asp-net" />

</urlMappings> 

Com essa configuração o web.config irá fazer o mapeamento da URL para nós.

Dessa forma se um usuário digitar http://www.macoratti.net/visual-basic-net ele verá o conteúdo de http://www.macoratti.net/pageview.aspx?catid=1

Só tem um inconveniente: é um mapeamento fixo e trabalhoso e pode levar a erros pois é feito manualmente.

Outras desvantagens que devem ser consideradas, dependendo da solução adota , seria perder o suporte a Themes e Master Pages e precisar de direitos de Administrador para instalar a Extensão ISAPI no servidor.

Portanto esta solução é indicada quando você tem pouca páginas para mapear ou que foram movidas mas ela é desaconselhável se forem centenas de página

Outro problema que deve ser considerado é que se a página de destino contiver elementos que inicializem um postback para o servidor o usuário irá visualizar a mudança de URL pois a ASP .NET preenche o atributo action do da tag HTML form com o caminho atual da página.

Uma outra solução seria usar um componente para fazer o serviço.

Você pode pegar o componente no link http://www.urlrewriting.net/149/en/home.html que possui o download da documentação, binários, exemplo e fonte.

Eu pretendo publicar um artigo mostrando como usar um componente para reescrever URLs.

Aguarde...

Eu sei é apenas ASP .NET , mas eu gosto...

Referências:


José Carlos Macoratti