URL amigables en IIS 7 y ASP clįsico

Escrito por Programador ASP clásico en Servidores


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:

 

 

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

 

 

 

 

 

 

Publicado el 11/09/2014 a las 13:46:38 hrs. | 1441 visitas.

Subir
Web hosting by Somee.com