Regla con asignación de reescritura: plantilla de regla
por Ruslan Yakushev
Las plantillas de reglas se usan para proporcionar una manera sencilla de crear una o varias reglas de reescritura para un escenario determinado. El módulo URL Rewrite incluye varias plantillas de reglas para algunos escenarios de uso comunes. Además de la interfaz de usuario del módulo URL Rewrite, proporciona un marco para conectar plantillas de reglas personalizadas. En este tutorial se le guiará en el uso de la plantilla "Regla con asignación de reescritura" que se incluye con el módulo URL Rewrite.
Requisitos previos
Para poder seguir este tutorial, es necesario reunir los siguientes requisitos previos:
- IIS 7.0 o posterior con el servicio de rol ASP.NET habilitado;
- Versión Go Live del módulo de URL Rewrite instalada.
Configuración de una página web de prueba
Usaremos una página de prueba sencilla asp.net para comprobar que las reglas creadas por la plantilla funcionan correctamente. La página de prueba simplemente lee las variables de servidor web y genera sus valores en el explorador.
Copie el siguiente código de ASP.NET y colóquelo en la carpeta %SystemDrive%\inetpub\wwwroot\
en un archivo denominado article.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 Test</title>
</head>
<body>
<h1>URL Rewrite Module Test Page</h1>
<table>
<tr>
<th>Server Variable</th>
<th>Value</th>
</tr>
<tr>
<td>Original URL: </td>
<td><%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
</tr>
<tr>
<td>Final URL: </td>
<td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
</tr>
</table>
</body>
</html>
Después de copiar este archivo, vaya a http://localhost/article.aspx
y compruebe que la página se ha representado correctamente en un explorador.
Uso de la plantilla de regla para generar una regla de reescritura
La plantilla "Regla con asignación de reescritura" se puede usar para generar reglas de reescritura y redireccionamiento que utilizan mapas de reescritura para almacenar asignaciones estáticas entre direcciones URL solicitadas originalmente y direcciones URL reescritas o redirigidas. Para más información sobre el uso de asignaciones de reescritura, consulte "Referencia de configuración del módulo URL Rewrite" y "Uso de asignaciones de reescritura en el módulo URL Rewrite".
Para usar esta plantilla, siga estos pasos:
Vaya al Administrador de IIS.
Seleccione "Sitio web predeterminado".
En el panel "Acciones" en el lado derecho, haga clic en "Agregar reglas…".
En el cuadro de diálogo "Agregar reglas", seleccione "Regla con asignación de reescritura" y haga clic en "Aceptar":
En el cuadro de diálogo "Agregar regla con asignación de reescritura", elija "Reescribir" en la lista desplegable. En el cuadro combinado "Elegir asignación de reescritura:", especifique el nombre de la nueva asignación de reescritura como StaticRewrites.
Haga clic en "Aceptar". Esto creará una asignación de reescritura con el nombre especificado y una regla de reescritura con el nombre "Regla de reescritura 1 para StaticRewrites" que hace referencia a esa asignación de reescritura.
Después de hacer clic en "Aceptar", se le dirigirá a una página en la que puede especificar las entradas de asignación para la asignación de reescritura. Haga clic en "Agregar entrada de asignación..." en el panel Acciones en el lado derecho y escriba luego el valor original y nuevo para la entrada de asignación como "/article1" y "/article.aspx?id=1&title=some-title" respectivamente.
Repita el paso anterior para agregar dos entradas de asignación más de la siguiente manera:
Valor original: Valor nuevo: /some-title /article.aspx?id=1&title=some-title /post/some-title.html /article.aspx?id=1&title=some-title
Después de completar estos pasos, debería ver la siguiente asignación de reescritura y la regla de reescritura creada en el archivo C:\inetpub\wwwroot\web.config
.
<rewrite>
<rewriteMaps>
<rewriteMap name="StaticRewrites">
<add key="/article1" value="/article.aspx?id=1&title=some-title" />
<add key="/some-title" value="/article.aspx?id=1&title=some-title" />
<add key="/post/some-title.html" value="/article.aspx?id=1&title=some-title" />
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="Rewrite Rule 1 for StaticRewrites" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Rewrite" url="{C:1}" appendQueryString="False"/>
</rule>
</rules>
</rewrite>
Prueba de la regla
Para probar la regla de reescritura generada que usa la asignación "StaticRewrites", abra el explorador web y solicite cualquiera de las siguientes direcciones URL:
http://localhost/article1
http://localhost/some-title
http://localhost/post/some-title.html
Cualquiera de las direcciones URL anteriores debe hacer que la dirección URL se reescriba de acuerdo con las asignaciones definidas en la asignación de reescritura. Los resultados deben tener un aspecto similar a la página siguiente:
Resumen
En este tutorial ha aprendido a generar reglas de reescritura con asignaciones de reescritura mediante la plantilla "Regla con asignación de reescritura" incluida con el módulo de reescritura de direcciones URL. Esta plantilla de regla se puede usar para crear una regla y una asignación de marcador de posición que pueden contener un gran número de asignaciones de reescritura y redireccionamiento estáticas para la aplicación web.