Diseñando la estructura de tu web: URLs y extensiones

Desde hace tiempo intentamos que cuando programamos una web las extensiones de los ficheros y la estructura de directorios no nos condicionen en el futuro.

Desde hace tiempo intentamos que cuando programamos una web las extensiones de los ficheros y la estructura de directorios no nos condicionen en el futuro.

Por ejemplo si desarrollas en asp y creas tu web con URLs del tipo…
 

http://mi.com/productos/coches.asp

… y llegado un momento te ves en la necesidad de cambiar de lenguaje de programación, vas a tener bastantes problemas. 

Por ejemplo si tienes que pasarte a PHP tendrás que crearte una página del tipo:

http://mi.com/productos/coches.php

Y después redirigir con un ”HTTP Error 301, Moved permanently” de tu antigua página “asp” a la nueva “php” para intentar perder el menor posicionamiento posible… y aun así perderás tráfico. 

Es algo fácilmente solucionable con un poco de picardía al principio: yo te recomendaría que en lugar de utilizar las URLs anteriores crees una estructura de directorios de este tipo:

http://mi.com/productos/coches/

Jugando con los Documentos Predeterminados de IIS que se pueden cambiar con facilidad en cualquier momento (incluso en alojamientos compartidos).

Es decir, en el interior de la carpeta coches existe un fichero que puede llamarse default.asp, default.html, default.aspx, default.php… y eso da igual ya que tanto nuestros usuarios como los buscadores sólo conocerán la URL que utilicemos en los enlaces, en este caso la de la carpeta.

De esta manera llegado el momento podremos cambiar de lenguaje de programación sin miedo a perdidas de tráfico. 

Desde mi punto de vista el lenguaje de programación que utilicemos no es un dato que interese al usuario por lo que no debemos abofetearle con él cada vez que entre en nuestra web.

Si la URL necesita parámetros para generarse, por ejemplo una lista de productos extensa que requiere paginación tenemos que tener cuidado y no ser torpes. En lugar de enlazar a:
 

http://mi.com/productos/coches/default.php?pag=2
Enlazaremos a:
 
http://mi.com/productos/coches/?pag=2
Para evitar que una misma página tenga dos URLs distintas tendremos la precaución de que cuando enlacemos de nuevo con la primera página no haya un enlace del tipo:

http://mi.com/productos/coches/?pag=1

Hay que ser consistente y enlazar de nuevo con:

http://mi.com/productos/coches/

En nuestro CMS hemos tenido mucha precaución con este tipo de detalles. Como ya hemos comentado en otras ocasiones, nosotros fuimos construyendo nuestro programa a partir de Blogger… pero donde vimos algo mejorable intentamos corregirlo, por ejemplo un enlace a la etiqueta “España Libre” en Blogger sería tal que así:
 

/labels/Espa=C3=B1a%20Libre.html
Mientras que nuestra URL es bastante mejor y sería tal que así:
 
/archivos/espana-libre/
Hay que tener en cuenta que para los buscadores con que sólo una letra pase de mayúsculas a minúsculas, ya considerará la URL completamente distinta. Por eso nosotros nos fijamos como norma nunca utilizar mayúsculas en los enlaces internos, además depuramos los espacios convirtiéndolos en guiones medios y transformamos algunos caracteres en otros más compatibles (ñ-n, á-a). 

Son pequeños detalles, a veces casi artesanales, que sumados a otros muchos van marcando la diferencia. Observar este tipo de cosas cuando visitamos una web puede ayudarnos a hacernos una idea de si el equipo que hay detrás es cuidadoso o si no ha prestado ninguna atención al SEO de la web.

No obstante nuestro CMS tiene un defecto: los artículos del blog son de las pocas URL que no siguen este patrón y revelan la extensión del fichero y teniendo en cuenta que en todos los blogs se publican más de 500 artículos al mes, ahora es un problema bastante laborioso de solucionar…

Esta semana vamos a importar un nuevo blog desde Blogger a nuestro CMS y se nos ha ocurrido lo siguiente: conservaremos las URL con la extensión .html que utiliza Blogger (lo cual nos permitiría por ejemplo el día de mañana exportar ese mismo blog a WordPress). 

Para ello sólo hay que conseguir que los archivos con extensión .html se procesen como si fueran páginas ASP para lo que hay que agregar una nueva asignación de extensión en IIS:

 

Llegado el momento podríamos incluso desasociar la extensión .asp y ejecutarla como si fuera PHP…. No es una solución perfecta, pero nos ayudará a hacer la migración de los artículos de una manera totalmente transparente.