Compartir a través de


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:

  1. IIS 7.0 o posterior con el servicio de rol ASP.NET habilitado;
  2. 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.

Screenshot of the U R L Rewrite Module Test Page webpage.

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:

  1. Vaya al Administrador de IIS.

  2. Seleccione "Sitio web predeterminado".

  3. En la vista de características, haga clic en "URL Rewrite"
    Screenshot of the Default Web Site Home screen with the U R L Rewrite option being highlighted.

  4. En el panel "Acciones" en el lado derecho, haga clic en "Agregar reglas…".
    Screenshot of the U R L Rewrite screen with a focus on the Add Rules option.

  5. En el cuadro de diálogo "Agregar reglas", seleccione "Regla con asignación de reescritura" y haga clic en "Aceptar":
    Screenshot of the Add rules dialog with the Rule with rewrite map option being highlighted.

  6. 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.
    Screenshot of the Add rule with rewrite map dialog.

  7. 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.

  8. 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.
    Screenshot of the Add Mapping Entry dialog showing the Original value and New value fields.

  9. 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&amp;title=some-title" />
            <add key="/some-title" value="/article.aspx?id=1&amp;title=some-title" />
            <add key="/post/some-title.html" value="/article.aspx?id=1&amp;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:

Screenshot of the U R L Rewrite Module Test Page showing the Original U R L and Final U R L fields.

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.