Módulo de Reescrita de URL 2.0

por Ruslan Yakushev

Introdução

Essa seção da documentação se aplica à Reescrita de URL 2.0 para o IIS 7.

A Reescrita de URL 2.0 para IIS 7 e posteriores é uma versão incremental que inclui todos os recursos da versão 1.1e adiciona suporte à extensibilidade do .NET e à reescrita de resposta de saída. Mais especificamente, ele pode ser usado para:

  • Implementar lógica de reescrita complexa usando provedores de reescrita escritos no .NET
  • Substitua as URLs geradas por um aplicativo Web no HTML de resposta por um equivalente mais amigável e amigável do mecanismo de pesquisa
  • Modifique os links na marcação HTML gerada por um aplicativo Web por trás de um proxy reverso.
  • Corrija o conteúdo de qualquer resposta HTTP usando a correspondência de padrões de expressão regular.
  • Modifique cabeçalhos de solicitação e resposta HTTP e variáveis de servidor do IIS.

Recursos

A Reescrita de URL 2.0 inclui os seguintes principais recursos:

  • Provedores de reescrita personalizados (novos no RTW). Os provedores de reescrita podem ser usados quando uma lógica de reescrita de URL não pode ser expressa em termos de padrões de expressão regular ou quando é necessário tomar decisões de reescrita com base em dados armazenados fora do arquivo web.config (e.g. SQL banco de dados ou arquivos de texto). Os provedores de reescrita do cliente podem ser implementados em qualquer linguagem do .NET.
  • Mecanismo de reescrita de resposta baseada em regras. As regras de saída são usadas para expressar a lógica do que comparar partes da resposta e o que fazer se a comparação tiver sido bem-sucedida. Os administradores do servidor Web e do site podem usar regras de saída para definir uma lógica de reescrita de resposta complexa.
  • Reescrever dentro do conteúdo de marcas HTML específicas. Em vez de verificar toda a resposta para uma correspondência específica, a regra pode ser configurada para examinar apenas dentro de determinadas marcas HTML, como <a>, <img> etc. Dessa forma, o padrão é muito simplificado e o processo de aplicação da regra ao conteúdo é muito mais rápido em comparação com a aplicação do padrão a toda a resposta.
  • Pré-condições para regras de saída. A aplicação de regras de reescrita em cada resposta é uma operação cara e não é necessária na maioria dos casos. As pré-condições são usadas para verificar os metadados de resposta para determinar se a avaliação de regras de saída deve ser aplicada.
  • Reescrita de variáveis de servidor e cabeçalhos de solicitação HTTP. Várias variáveis de servidor IIS e cabeçalhos de solicitação HTTP podem ser definidos usando regras de reescrita.
  • Reescrita de cabeçalhos de resposta HTTP. As regras de reescrita de saída podem ser usadas para modificar quaisquer cabeçalhos de resposta HTTP existentes ou para definir novos.
  • Permitir lista de variáveis de servidor. Para impedir que as regras de reescrita distribuída modifiquem acidental ou propositalmente variáveis de servidor do IIS que possam afetar o comportamento de segurança ou de runtime de um aplicativo Web, as variáveis de servidor modificáveis agora precisam ser explicitamente adicionadas à lista de permissões.
  • Função HtmlEncode. A reescrita de saída geralmente pode usar dados não confiáveis (por exemplo, cadeia de caracteres de consulta ou cabeçalhos HTTP) para criar uma cadeia de caracteres de substituição para inserir na resposta HTTP. Nesses casos, a função HtmlEncode deve ser usada para impedir a inserção de scripts do lado do cliente na resposta, o que pode resultar em vulnerabilidade de script entre sites.
  • Acompanhamento de grupos de captura entre condições de regra. A lógica de referência de condições na Reescrita de URL 1.1 funcionou somente nas últimas condições correspondentes. Na v2, é possível configurar a lógica de referência de back para funcionar em todas as condições correspondentes.
  • Modelos de regra para Otimização do Mecanismo de Pesquisa (novo no RTW). Três novos modelos de regra facilitam muito a criação de regras de redirecionamento que imporão o uso de URLs canônicas para páginas da Web em seu site.
  • Modelo de regra de proxy reverso (novo no RTW). Esse modelo pode ser usado para gerar rapidamente regras de reescrita de entrada e saída que implementam a configuração de proxy reverso.
  • Registro em log de URLs reescritas. As regras de reescrita podem ser configuradas para registrar a URL reescrita nos logs do IIS W3C em vez de registrar uma URL solicitada originalmente.
  • Interface do usuário atualizada no Gerenciador do IIS. A interface do usuário foi significativamente aprimorada para representar melhor a configuração do módulo e simplificar tarefas comuns como a configuração de regras de reescrita e condições de reescrita.

Como instalar o módulo

Baixe a Reescrita de URL 2.0 usando os links na home page do módulo em https://www.iis.net/extensions/urlrewrite

Observação

  • Se uma versão anterior da Reescrita de URL, como v1.0 e v1.1, já estiver instalada, ela será atualizada para a v2.0
  • Se uma versão RC da Reescrita de URL 2.0 já estiver instalada, ela será atualizada para a versão RTW.

Problemas conhecidos

  1. A reescrita de resposta não funciona com compactação estática. Você precisará desabilitar a compactação estática do IIS para usar a reescrita de resposta.
  2. As regras de saída não serão aplicadas a respostas codificadas em transferência em partes se rewriteBeforeCache estiver habilitado. Defina rewriteBeforeCache como false se você precisar reescrever respostas codificadas em partes de transferência.

Instalando os exemplos de extensibilidade

As Amostras de Extensibilidade de Reescrita de URL incluem os assemblies .NET e o código-fonte que implementa estes provedores:

  • DbProvider – esse provedor pode ser usado para recuperar mapeamentos de reescrita de uma tabela de banco de dados do SQL Server executando um procedimento armazenado;
  • FileMapProvider – esse provedor pode ser usado para recuperar mapeamentos de reescrita armazenados em um arquivo de texto;
  • FileContainsProvider – esse provedor pode ser usado para verificar se qualquer cadeia de caracteres em um arquivo de texto é uma subcadeia de caracteres da cadeia de caracteres de entrada do provedor.

Baixe as Amostras de Extensibilidade de Reescrita de URL da Galeria de Códigos MSDN.

Como usar o módulo

Esses artigos abordam a funcionalidade da Reescrita de URL v2.0 e explicam como usá-la para realizar cenários comuns de reescrita.

Passo a passo

Referência de funcionalidade