Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Esta sección de la documentación se aplica a la versión 2.0 del módulo de reescritura url para IIS 7.
Este tutorial le guiará a través de cómo usar url Rewrite Module v 2.0 para establecer encabezados de solicitud HTTP y variables de servidor IIS.
Prerrequisitos
Este tutorial requiere los siguientes requisitos previos:
- IIS 7.0 o posterior con ASP.NET servicio de rol habilitado
- Url Rewrite Module 2.0 instalado
Configuración de un escenario de tutorial
Para demostrar cómo usar url Rewrite Module 2.0 para establecer encabezados HTTP y variables de servidor IIS, implementaremos un escenario en el que el encabezado http cookie en la solicitud se establece en función de la dirección URL solicitada. Por ejemplo, supongamos que tiene una aplicación web que sirve páginas web localizadas. La aplicación web determina el idioma de la respuesta en función de la cookie HTTP de la solicitud. El problema con este enfoque es que los motores de búsqueda no indexarán el contenido localizado de esta aplicación, ya que los rastreadores del motor de búsqueda no usan cookies HTTP y, por lo tanto, solo la aplicación web atenderá el contenido en el idioma predeterminado. Para solucionar este problema, decide agregar información sobre el idioma como parte de la dirección URL, por ejemplo, http://www.contoso.com/default.aspx, y luego usar el Módulo de Reescritura de URL 2.0 para establecer la cookie que la aplicación web espera, con el fin de determinar el idioma de la respuesta. Además, quiere establecer otra variable de servidor denominada ORIGINAL_URI que contendrá la cadena de URI solicitada originalmente.
Para configurar el escenario de tutorial, copie el código ASP.NET siguiente y colóquelo en la %SystemDrive%\inetpub\wwwroot\ carpeta en un archivo denominado language.aspx:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL Rewrite Module v2 Test - Setting Server Variables</title>
</head>
<body>
<h1>Setting HTTP request header and a server variable with URL Rewrite Module v2</h1>
<p>The value of the Language cookie is <strong><%=( Request.Cookies["Language"] != null ) ? Request.Cookies["Language"].Value : "Cookie not set" %></strong></p>
<p>The originally requested URI is <strong><%= HttpUtility.HtmlEncode( Request.ServerVariables["ORIGINAL_URI"] ) %></strong></p>
</body>
</html>
Después de copiar este archivo, vaya a http://localhost/language.aspx y compruebe que la página se ha representado correctamente en un explorador.
Creación de una regla de reescritura
Creará una regla de reescritura que reescribirá las direcciones URL mediante el siguiente formato:
http://localhost/<language>/anyfile.aspx
se volverá a escribir como:
http://localhost/anyfile.aspx
La regla de reescritura también establecerá dos variables de servidor IIS:
- HTTP_COOKIE
- ORIGINAL_URI
Creará una regla de reescritura mediante la interfaz de usuario de reescritura de url en el Administrador de IIS.
Abra el Administrador de IIS, elija el "Sitio web predeterminado" en la vista de árbol del lado izquierdo y, a continuación, abra la característica "Url Rewrite":
Permitir que se cambien las variables de servidor
De forma predeterminada, las reglas de reescritura distribuidas (es decir, las reglas definidas para sitios o aplicaciones web específicos) no pueden establecer ni cambiar ninguna variable de servidor IIS, a menos que la variable de servidor se agregue a la lista "Permitido". Para este tutorial, deberá agregar las dos variables de servidor siguientes a la lista "Variables de servidor permitidas":
- HTTP_COOKIE
- ORIGINAL_URI
Nota:
La lista "Variables de servidor permitidas" no es aplicable a las reglas globales, que se definen en un nivel de servidor. No es necesario agregar una variable de servidor a la lista "Permitido" si esa variable de servidor se establece mediante una regla de reescritura global.
Seleccione la opción "Ver variables de servidor..." acción desde el panel "Acciones":
Use la acción "Agregar..." para agregar las variables de servidor HTTP_COOKIE y ORIGINAL_URI a la lista "Variables de servidor permitidas":
Una vez actualizada la lista "Variables de servidor permitidas", haga clic en la acción "Volver a reglas" para volver a la vista de lista de reglas.
Definición del mapa de reescritura
El siguiente paso consiste en definir un mapa de reescritura que se usará para asignar la parte de la URL, que representa el idioma, al identificador de configuración regional que guardará la regla de reescritura en el encabezado HTTP de cookie.
Seleccione la opción "Ver mapas de reescritura..." acción en el panel "Acciones":
Haga clic en "Agregar mapa de reescritura..." y especifique el nombre del mapa como "Idiomas":
Este mapa definirá las asignaciones entre la parte de la URL que representa un idioma y el código de localización que se usará al establecer la cookie de solicitud HTTP. Haga clic en "Editar configuración del mapa..." para especificar el valor predeterminado a usar cuando no se puede encontrar ningún mapeo. Escriba "en_US" como valor predeterminado:
Cierre el cuadro de diálogo y, a continuación, use la acción "Agregar entrada de asignación..." para agregar las siguientes asignaciones:
| Valor original: | Nuevo valor: |
|---|---|
| fr-fr | fr_FR |
| de-de | de_DE |
| ru-ru | ru_RU |
Definición de la regla de reescritura
Por último, creará una regla de reescritura que establece las variables de servidor mediante el mapa de reescritura definido anteriormente.
Para abrir el cuadro de diálogo "Editar regla", haga clic en la acción "Agregar reglas..." en la vista principal de funcionalidades y seleccione la "Regla en blanco" en la categoría "Reglas de entrada". Escriba la configuración de la regla como se indica a continuación:
Nombre de regla: "establecer variables de servidor"
Dirección URL solicitada: "Coincide con el patrón"
Uso de: "Expresiones regulares"
Patrón: "^([a-z]{2}-[a-z]{2})/(.*)"
Condiciones:
- Entrada: "{Languages:{R:1}}"
- Tipo: "Coincide con los patrones"
- Patrón: "(.+)"
Acción:
- Tipo: "Reescritura"
- Reescribir URL: "{R:2}"
El patrón de la regla coincide con cualquier ruta de acceso url que contenga el segmento de idioma (por ejemplo, http://www.contoso.com/de-de/default.aspx). También captura el segmento de idioma y la ruta URL en las referencias posteriores de la regla, de modo que se puedan volver a usar más adelante en la regla. La condición de regla usa el segmento de idioma capturado anteriormente como una clave de búsqueda que se pasa al mapa de reescritura "Idiomas". El resultado de la búsqueda en el mapa se almacena en la referencia inversa condicionada. La acción de regla vuelve a escribir la dirección URL para que no contenga el segmento de idioma.
Expanda "Variables de servidor..." y especifique los valores que se usarán para establecer las variables de servidor:
- Nombre: HTTP_COOKIE, Valor: Language={C:1}
- Nombre: URI_ORIGINAL, Valor: http://{HTTP_HOST}{REQUEST_URI}
La cookie HTTP se establece mediante la referencia inversa de condición, que contiene el identificador de configuración regional obtenido de la asignación de reescritura de "Idiomas". El valor de la variable de servidor ORIGINAL_URI se compila mediante {HTTP_HOST} y las variables de servidor {REQUEST_URI}.
Haga clic en "Aceptar" para cerrar el cuadro de diálogo y, a continuación, haga clic en "Aplicar" en el panel "Acciones" del lado derecho para guardar la regla.
Prueba de la regla
Para probar que la regla establece correctamente la cookie y una variable de servidor, abra un explorador web y solicite la siguiente dirección URL:
http://localhost/fr-fr/language.aspx
Debería ver que la regla de reescritura ha establecido la cookie "Idioma" de acuerdo con la dirección URL solicitada. Además, la cadena de dirección URL original se ha hecho accesible para la página de ASP.NET a través de la variable de servidor "ORIGINAL_URI".