URL amigables en IIS 7 y ASP clásico

Windows Server

El Internet Information Information Services (IIS) permite crear urls amigables para mejorar el posicionamiento SEO. Para ello debe instalar y activar el módulo de rewrites del IIS. Una vez funcionando, configuramos todo el enrutado a través del web.config.

Debemos crear reglas usando expresiones regulares para redigir las urls que necesitemos. Vamos a usar dos tipos:

 

  • Rewrites: El servidor entiende que las nuevas urls equivalen a las viejas rutas.
  • Redirects: Definimos redirecciones, que redirigen al usuario desde las antiguas rutas a las nuevas amigables.

 

Primero debemos definir que estamos en el modulo rewrite y que vamos a crear unas reglas. Luego definimos la regla, la marcamos con un nombre único:

<rewrite> <rules>       <rule name="Rewrite paginado">      <match url="^productos/([0-9]+)/" />      <action type="Rewrite" url="producto.asp?pag={R:1}" />    </rule></rules></rewrite>

 

Explicación: dentro de la regla, definimos un "match", que es la ruta amigable creada, en ella tenemos un primer nivel con productos, y un segundo con el paginado. Al ser un paginado numérico, añadimos una expresión regular que sólo admita números. Después está marcada la acción a realizar, en este caso, un rewrite. Con él marcamos que la url equivalente que se reescribe, es la antigua de /articulo.asp?pag=3.

 

Ahora que hemos conseguido que el IIS entienda las nuevas urls, vamos a redirigir las antiguas a las nuevas amigables. Para ello creamos una nueva regla, en este caso sera un redirect, que redirigirá la antigua url a la nueva. Incluimos esta nueva regla dentro de la estructura anterior de rules.

<rule name="Redireccion paginado productos">    <match url="^productos$" />    <conditions>          <add input="{QUERY_STRING}" pattern="pag=(\d+)" />    </conditions>    <action type="Redirect" url="/productos/{R:1}/" redirectType="Permanent" /></rule>

 

En este caso, añadimos un nuevo elemento, las condiciones. Éstas nos permitirán filtrar cierto tipo de eventos. En este caso, al ser un querystring, añadimos como dato de entrada la página, y luego marcamos en la redirección como queremos mostrarla con {R:1}

 

Otro ejemplo ahora con varios parámetros y condiciones:

<rule name="Redireccion de articulo con categoria">    <match url="^articulos.aspx$" />    <conditions>        <add input="{QUERY_STRING}" pattern="cat=(\d+)" />        <add input="##{R:1}##_{QUERY_STRING}" pattern="##([^#]+)##_.*art=(\d+)" />    </conditions>    <action type="Redirect" url="/articulos/{R:1}/{R:2}" redirectType="Permanent" appendQueryString="false" /></rule>

 

En el ejemplo vemos dos variables por query strings, que se redirigen a una ruta perfectamente formada con dos niveles amigables.

Una redirección común para el posicionamiento es la siguiente (añade www al inicio de la URL):

<rule name="without-www-to-with-www">    <match url="^(.*)$" />    <conditions logicalGrouping="MatchAll">	</add input="{HTTP_HOST}" pattern="^dominio.com" />    </conditions>    <action type="Redirect" url="http://www.dominio.com/{R:1}" /></rule>

 

Es todo...

 

 

 

 

 

 

tags:

En esta sección encontrarás una mezcla de códigos recopilados de fuentes públicas de Internet y otros creados por CoreASP. Estos recursos se comparten de buena fe con el único objetivo de servir como base de conocimiento en el desarrollo de aplicaciones en ASP Clásico. CoreASP no garantiza la precisión, vigencia ni funcionamiento de los artículos o fragmentos de código publicados, y no se hace responsable por el uso que se les dé. Se recomienda siempre revisar, adaptar y probar el código antes de implementarlo en entornos de producción.