Mod_rewrite para nanoblogger
Revisando los errores 404 de este sitio web he visto que muchos de
ellos corresponden al cambio de direcciones provocadas por la
actualización del Nanoblogger a una versión más moderna en los ficheros
del archivo
Por ejemplo tenemos que direcciones que antes eran
/archives/2004-07.html /archives/2005-03-25T15_57_02.html
Ahora han pasado a tener esta estructura
/archives/2004/07/index.html /archives/2005/03/25/T15_57_02/index.html
Como no me gusta que la gente que me visita pierda los enlaces, y a los que les preocupe el posicionamiento que sepan que a los buscadores tampoco les gusta, me he decidido a arreglar esto con el módulo mod_rewrite de apache
En apache2 activar el mod_rewrite es tan sencillo como crear un enlace simbólico de mods-available/rewrite.load a mods-enabled y hacer un restart
La parte interesante consiste en crear las reglas de reescritura, hay dos
sitios donde se pueden colocar.
La primera en una de las clausulas de Directory en los ficheros
de configuración y la segunda en un fichero .htaccess en el
directorio que nos interese. Para este caso yo he utilizado la segunda
opción.
Ojo, para que funcionen los ficheros .htaccess debemos asegurarnos que tenemos la opción AllowOverride que nos lo permita. Si lo tenemos a None, por ejemplo, lo llevamos claro.
Vamos con el fichero .htacces, lo primero activaremos el rewrite en este directorio y lo segundo fijaremos la posición del directorio local respecto al directorio web. Es decir si yo tengo el fichero en /var/www/archives (local), suponiendo el directorio raiz del servidor está en /var/www, el directorio web estará en /archives
RewriteEngine On RewriteBase /archives
A partir de ahora nos olvidamos del archives, vamos con la primera regla. Se trata de transformar 2004-07.html a 2004/07/index.html
RewriteRule ^([0-9]+)-([0-9]+)\.html $1/$2/index.html [R]
Es muy sencillo, todo lo que está entre paréntesis se convierte en las variables de la segunda parte. Así la expresión ([0-9]+) se convierte en $1. [0-9] nos dice el rango de caracteres que puede contener el rango y el símbolo + nos dice que tiene que haber uno o más de lo anterior. Todo lo que no está entre paréntesis son cosas literales.
La [R] del final sirve para que modifique el enlace, si no pone veremos en el navegador 2004-07.html y si lo ponemos veremos 2004/07/index.html. Creo que es mejor la opción de ponerlo ya que evitas que de esa forma siempre muestras el enlace correcto
La segunda regla es igual de sencilla la única variación que hay es que utilizamos (.*) como cuarta variable, en este caso el . es un comodín que indica cualquier carácter, por eso hay que escaparlo como \. cuando queremos que sea un punto de verdad como en \.html. El * dice que puede haber un número indeterminadado entre 0 y más del carácter anterior.
RewriteRule ^([0-9]+)-([0-9]+)-([0-9]+)T(.*)\.html $1/$2/$3/T$4/index.html [R]
Así que como puedes ver el mod_rewrite para torpes no tiene mucho más misterio, si todavía te quedan dudas ponme un comentario o enviame un mail
-----