944 063 154 carrito-compra-linube

Qué reglas de URL rewrite deberías conocer en IIS7

Publicado enDesarrollo y Programación

Cada vez es más importante disponer de una buena arquitectura de URLs en nuestras aplicaciones y sitios web. Arquitecturas de servicios como REST y la importancia de optimizar el SEO de cara a resultados de búsquedas; suelen ser los dos motivos más importantes para que nuestra aplicación necesite disponer de su propia estrategia de URLs coherente al contenido que se ofrece. Para realizar esta tarea, puedes recurrir a IIS7.

IIS7 (Internet Information Server) es un conjunto de servicios para servidores que utilicen Windows como sistema operativo. Una aplicación integrada en el sistema operativo que resulta muy fácil de administrar. Desde hace ya dos años, IIS goza de su propio sistema de URL rewrite nativo, lo que nos permite de una forma muy sencilla aplicar las reglas necesarias para implementar nuestra estrategia de URLs. IIS7 incluso permite crear certificados de seguridad SSL autofirmados, pero este tema lo trataremos en otro artículo.

A lo largo de los últimos años, hemos ido recopilando algunas de estas reglas. A continuación mostramos aquellas más necesarias para que tu estrategia de URLs obtenga los mejores resultados.

Eliminar la última barra «/» de la URL

Por ejemplo, si quieres eliminar la barra final de tu URL, deberías añadir unas líneas de código como las siguientes. De esta forma, aunque tu URL haya cambiado, el tráfico se redirigirá a la nueva dirección.


<rule name="Eliminar la ultima barra en la url" stopProcessing="true">

 <match url="(.*)/$" />
 <conditions>
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>

Agregar la última barra «/» a la URL

<rule name="Agregar la ultima barra a la url" stopProcessing="true">

 <match url="<span><span>(.*[^/])</span></>$" />
 <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>

<action type="Redirect" redirectType="Permanent" url="{R:1}/" />
</rule>

Convertir toda la URL a minúsculas en IIS7

<rule name="Forzar toda la url a minusculas" stopProcessing="true">

    <match url=".*[A-Z].*" ignoreCase="false" />
     <action type="Redirect" url="{ToLower:{R:0}}" redirectType="Permanent" />

</rule>

Quitar las www del hostname

<rule name="Quitar las www" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
       <add input="{HTTP_HOST}" negate="true" pattern="^linube.com$" />
   </conditions>
    <action type="Redirect" url="https://linube.com/{R:1}" redirectType="Permanent" />
</rule>

Añadir las www al hostname

<rule name="Añadir las www" stopProcessing="true">
      <match url="(.*)" />
     <conditions>
        <add input="{HTTP_HOST}" negate="true" pattern="^www.linube.com$" />
     </conditions>
    <action type="Redirect" url="https://www.linube.com/{R:1}" redirectType="Permanent" />
</rule>

Forzar HTTPS en IIS7

<rule name="Forzar https" stopProcessing="true">

     <match url="(.*)" />
     <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
     </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>

Rechazar hotlinking a imágenes

<rule name="Rechazar hotlinking" stopProcessing="true">

     <match url=".*.(gif|jpg|png)$"/>
     <conditions>
       <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
      <add input="{HTTP_REFERER}" pattern="^https://linube.com/.*$" negate="true" />
     </conditions>
     <action type="Rewrite" url="/images/gandalf_nopuedespasar.jpg" />
</rule>

WordPress en IIS7

<rule name="Wordpress" stopProcessing="true">

           <match url="*" />
           <conditions>
               <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
               <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />

</rule>

Symfony (producción)

<rule name="Symfony" stopProcessing="true">

     <match url="^(.*)$" ignoreCase="false" />
       <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
     </conditions>
    <action type="Rewrite" url="index.php" appendQueryString="true" />

</rule>