Uso del módulo URL Rewrite 2.0

de Ruslan Yakushev

Introducción

Esta sección de la documentación se aplica a URL Rewrite 2.0 para IIS 7.

URL Rewrite 2.0 para IIS 7 y versiones posteriores es una versión incremental que incluye todas las características de la versión 1.1 y agrega compatibilidad con la extensibilidad de .NET y la reescritura de respuestas de salida. Más concretamente, se puede usar para lo siguiente:

  • Implementar lógica compleja de reescritura mediante proveedores de reescritura escritos en .NET
  • Reemplazar las direcciones URL generadas por una aplicación web en el código HTML de respuesta por un equivalente más descriptivo para los usuarios y los motores de búsqueda
  • Modificar los vínculos del marcado HTML generado por una aplicación web detrás de un proxy inverso.
  • Corregir el contenido de cualquier respuesta HTTP mediante la coincidencia de patrones de expresión regular.
  • Modificar los encabezados de solicitud y respuesta HTTP, y las variables de servidor IIS.

Características

URL Rewrite 2.0 incluye las siguientes características clave:

  • Proveedores de reescritura personalizados (novedad de RTW). Los proveedores de reescritura se pueden usar cuando una lógica de reescritura de direcciones URL no se puede expresar en términos de patrones de expresiones regulares, o bien cuando es necesario tomar decisiones de reescritura basadas en datos almacenados fuera del archivo web.config (por ejemplo, una base de datos SQL o archivos de texto). Los proveedores de reescritura de cliente se pueden implementar en cualquier lenguaje .NET.
  • Motor de reescritura de respuestas basadas en reglas. Las reglas de salida se usan para expresar la lógica de con qué comparar partes de la respuesta y qué hacer si la comparación se realiza correctamente. Los administradores del servidor web y del sitio pueden usar reglas de salida para definir una lógica compleja de reescritura de respuestas.
  • Reescritura dentro del contenido de etiquetas HTML específicas. En lugar de examinar toda la respuesta de una coincidencia determinada, la regla se puede configurar para que solo busque dentro de determinadas etiquetas HTML, como <a>, <img>, etc. De este modo, el patrón se simplifica considerablemente y el proceso de aplicar la regla al contenido es mucho más rápido en comparación con su aplicación toda la respuesta.
  • Condiciones previas para las reglas de salida. La aplicación de reglas de reescritura en todas las respuestas es una operación costosa y en la mayoría de los casos no es necesaria. Las condiciones previas se usan para comprobar los metadatos de respuesta para determinar si se debe aplicar la evaluación de reglas de salida.
  • Reescritura de variables de servidor y encabezados de solicitud HTTP. Se pueden establecer varias variables de servidor IIS y encabezados de solicitud HTTP mediante reglas de reescritura.
  • Reescritura de encabezados de respuesta HTTP. Las reglas de reescritura de salida se pueden usar para modificar los encabezados de respuesta HTTP existentes o para establecer otros nuevos.
  • Lista de permitidos para variables de servidor. Para evitar que las reglas de reescritura distribuidas modifiquen accidental o intencionadamente variables de servidor de IIS que puedan afectar al comportamiento de seguridad o en tiempo de ejecución de una aplicación web, las variables de servidor modificables ahora se deben agregar explícitamente a la lista de permitidos.
  • HtmlEncode (función). La reescritura de salida a menudo puede usar datos que no sean de confianza (por ejemplo, cadenas de consulta o encabezados HTTP) a fin de crear una cadena de reemplazo para insertarla en la respuesta HTTP. En esos casos, se debe usar la función HtmlEncode para evitar la inserción de scripts del lado cliente en la respuesta, lo que podría dar lugar a una vulnerabilidad de scripting entre sitios.
  • Seguimiento de grupos de captura entre condiciones de regla. La lógica de referencia inversa de las condiciones de URL Rewrite 1.1 solo funcionaba con las últimas condiciones coincidentes. En la versión 2, es posible configurar la lógica de referencia inversa para que funcione con todas las condiciones coincidentes.
  • Plantillas de reglas para la optimización del motor de búsqueda (novedad en RTW). Tres nuevas plantillas de reglas facilitan la creación de reglas de redirección que aplicarán el uso de direcciones URL canónicas para las páginas web del sitio.
  • Plantilla de reglas de proxy inverso (novedad de RTW). Esta plantilla se puede usar para generar rápidamente reglas de reescritura de entrada y salida que implementan la configuración de proxy inverso.
  • Registro de direcciones URL reescritas. Las reglas de reescritura se pueden configurar para registrar la dirección URL reescrita en los registros W3C de IIS, en lugar de registrar una URL solicitada originalmente.
  • Interfaz de usuario actualizada en el Administrador de IIS. La interfaz de usuario se ha mejorado considerablemente para representar mejor la configuración del módulo y simplificar estas tareas comunes, como la configuración de reglas de reescritura y las condiciones de reescritura.

Instalación del módulo

Descargue URL Rewrite 2.0 mediante los vínculos de la página principal del módulo en https://www.iis.net/extensions/urlrewrite

Nota:

  • Si ya está instalada una versión anterior de URL Rewrite, como v1.0 y v1.1, se actualizará a la versión v2.0
  • Si ya está instalada una versión RC de URL Rewrite 2.0, se actualizará a la versión RTW.

Problemas conocidos

  1. La reescritura de respuestas no funciona con compresión estática. Tendrá que deshabilitar la compresión estática de IIS para poder usar la reescritura de respuestas.
  2. Las reglas de salida no se aplican a las respuestas codificadas de transferencia fragmentada si rewriteBeforeCache está habilitado. Establezca rewriteBeforeCache en false si necesita reescribir las respuestas codificadas con transferencia fragmentada.

Instalación de los ejemplos de extensibilidad

Los ejemplos de extensibilidad de URL Rewrite incluyen los ensamblados de .NET y el código fuente que implementa estos proveedores:

  • DbProvider: este proveedor se puede usar para recuperar las asignaciones de reescritura de una tabla de base de datos de SQL Server mediante la ejecución de un procedimiento almacenado;
  • FileMapProvider: este proveedor se puede usar para recuperar las asignaciones de reescritura almacenadas en un archivo de texto;
  • FileContainsProvider: este proveedor se puede usar para comprobar si alguna cadena de un archivo de texto es una subcadena de la cadena de entrada del proveedor.

Descargue los ejemplos de extensibilidad de URL Rewrite desde la Galería de código de MSDN.

Uso del módulo

En estos artículos se describe la funcionalidad de URL Rewrite v2.0 y se explica cómo usarlo para lograr escenarios comunes de reescritura.

Tutoriales

Referencia de funcionalidad