Com a chegada do IIS7, abre-se automaticamente um leque de novas oportunidades. Uma delas é a customização de módulos para atender todo e qualquer tipo de requisição e neste cenário o módulo de URL Rewrite desenvolvido pela própria Microsoft, vem explorar um pouco deste potencial ainda tão pouco conhecido.

Com o URL Rewrite é possivel interceptar qualquer tipo de requisição seja ela ASP, ASP.NET ou HTML, e reescrever a URL antes que ela seja processada pelo IIS. A configuração é feita de forma fácil e intuitiva, atendendo tanto usuários experientes quanto os mais iniciantes.

Para usuários que nunca trabalharam com técnicas de URL Rewrite, é possivel realizar toda a configuração via IIS Manager remoto (Feature Delegation que está disponível no plano de hospedagem), utilizando-se de interfaces amigáveis e templates já prontos, possuindo inclusive recursos para o teste imediato de regras.

Para usuários mais experientes é possivel criar regras apenas alterando o arquivo web.config de sua aplicação. Usuários que já possuam conhecimento do famoso (e obscuro…) mod_rewrite do Linux, existe um recurso integrado que permite a importação deste arquivo para dentro do IIS. A própria interface realiza de maneira automática a conversão da sintaxe para os padrões Microsoft.

Seguem abaixo alguns exemplos de regras que podem ser criadas com o IIS7 URL Rewrite, lembrando que se deve colocar as tags dentro do arquivo web.config:


Código:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule>....</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Esta regra abaixo, reescreve a url originalmente enviada como:
“seudominio.com/exemplo-10.html” para “seudominio.com/exemplo.asp?id=10?


Código:
<rule name="exemplo 1">
<match ignoreCase="true" url="^exemplo-([0-9]+)\.html$" />
<action type="Rewrite" url="exemplo.asp?id={R:1}" appendQueryString="false" />
</rule>
Esta regra abaixo, reescreve a url originalmente enviada como:
“seudominio.com/teste” para “seudominio.com/exemplo.asp?parametro=teste”


Código:
<rule name="exemplo 2">
<match url="^([a-zA-Z0-9_-]+)/?$" ignoreCase="true" />
<action type="Rewrite" url="exemplo.asp?parametro={R:1}" appendQueryString="false" />
</rule>
Redirecionamento de domínio para pasta: Esta regra abaixo, redireciona o domínio “exemplo.com.br” para a pasta “exemplo” dentro da sua área de site.

Código:
<rule name="exemplo 3" enabled="true" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(www\.)?exemplo\.com\.br" ignoreCase="true" />
<add input="{R:1}" negate="true" pattern="^exemplo/" />
</conditions>
<action type="Rewrite" url="/exemplo/{R:1}" />
</rule>
Se você possui vários domínios contratados e deseja que todos os dominios sejam redirecionados para um domínio em específico, mantendo na
barra de endereços apenas este, realize a configuração abaixo:

Esta configuração redireciona os endereços "exemplo.com" e "exemplo.net" para "exemplo.com.br"



Código:
<rule name="exemplo 4" stopProcessing="true">
<match url="(.*)" />
<action type="Redirect" url="http://exemplo.com.br" redirectType="Permanent" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^(www.)?exemplo\.com$" />
<add input="{HTTP_HOST}" pattern="^(www.)?exemplo\.net$" />
</conditions>
</rule>
Fim. by-me