Configurar URL amigables en IIS

En el siguiente tutorial te mostraremos cómo crear URL’s amigables con el IIS.

Primero tendrás que comprobar que esté activado el módulo de reescritura en el IIS. Una vez activado, deberemos configurar todo el enrutado a través del web.config.

Para ello, crearemos una serie de reglas para redirigir y estructurar todas las URLs que necesitemos. Vamos a usar dos tipos:

  • Rewrites => Con ellas, vamos a definir unas normas para que el servidor entienda que las nuevas URLs equivalen a las viejas rutas.
  • Redirects => Vamos a definir unas redirecciones que redirijan al usuario desde las antiguas rutas hacia las nuevas URL amigables. Las redirecciones deben ser permanentes de cara a Google, para que escoja estas últimas como las definitivas; por lo tanto serán redirecciones 301.

Cómo crear reglas en el web.config

Primero definiremos la utilización del modulo rewrite(1) para crear unas reglas (2). Luego definimos la regla y la marcamos con un nombre (es importante que este nombre no se repita ya que sino obtendremos error 500). Ej.:

<rewrite>  (1)
<rules>    (2)
    <rule name="Rewrite ejemplo">
      <match url="^articulos/([0-9]+)/" />
      <action type="Rewrite" url="articulo.aspx?pag={R:1}" />
    </rule>
</rules>
</rewrite>

Como podrás ver, dentro de la regla definimos un match, que es la ruta amigable. En ella tenemos un primer nivel con artículos y un segundo nivel 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 por realizar, en este caso, un rewrite. Allí indicarás que la URL equivalente que se reescribe es la antigua de /articulo.aspx/pag=3.

Ahora que conseguimos que IIS comprenda las nuevas URL’s, vamos a redirigir las antiguas hacia las nuevas. Para ello crearemos una nueva regla, en este caso sera un redirect que efectuará la redirección antes mencionada. Incluimos esta nueva regla dentro de la estructura anterior de rules:

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

En este caso, añadimos un nuevo elemento: los condicionales. Estos nos permitirán filtrar cierto tipo de eventos. Al ser un query string, añadimos como dato de entrada la página, y luego marcamos en la redirección como queremos mostrarla con {R:1}

En el ejemplo anterior, hemos redireccionado un paginado que antes estaba con query-strings hacia una ruta amigable bien formada. Esto podemos aplicarlo a cualquier tipo de rutas, añadiendo todos los niveles deseados.

Ahora veremos otro ejemplo 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 este ejemplo vemos dos variables por query strings que se redirigen hacia una ruta perfectamente formada con dos niveles amigables.

A continuación, y para terminar, te mostramos un ejemplo de redirección que añade por defecto las www al inicio de la ruta:

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

Con esto finalizamos un nuevo tutorial!

Y recordá que si tenés alguna duda, podés escribirnos a soporte@baehost.com

Hasta la próxima!

Deja una respuesta