Nuestro blog

— por Asier Marqués

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 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 corente al contenido que se ofrece en cada solicitud.

Desde hace ya dos años, IIS7 goza de su propio sistema de url rewrite nativo, que nos permite de una forma muy sencilla aplicar las reglas necesarias para implantar nuestra estrategia de urls.

Aquí van unos ejemplos de reglas imprescindibles que he ido recopilando estos últimos años:

Eliminar la última barra “/” de la url


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

<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="^blackslot\.com$" />
     </conditions>
     <action type="Redirect" url="http://blackslot.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\.blackslot\.com$" />
      </conditions>
      <action type="Redirect" url="http://www.blackslot.com/{R:1}"
              redirectType="Permanent" />
</rule>

Forzar https

<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="^http://blackslot\.com/.*$" negate="true" />
      </conditions>
      <action type="Rewrite" url="/images/gandalf_nopuedespasar.jpg" />
</rule>

WordPress

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

Saludos, Asier Marqués

— Posted by Asier Marqués | Posted in Desarrollo web | Posted on December 18, 2009

Sin comentarios
dejar un comentario »

Nadie ha comentado nada

» RSS para los comentarios de éste post.
» TrackBack URL

Deja un comentario