Mod_Rewrite, es un módulo de Apache que nos permite transformar una URL del estilo /articulo/1/ en una url del modo articulo.php?id=1 sin que el usuario lo vea, de esta manera, cuando el usuario está accediendo a http://www.web.com/articulo/1/ en realidad accede a http://www.web.com/articulo.php?id=1 pero la dirección en el navegador es mas atractiva y facil de recordar. Esto se hace con el parametro de configuración RewriteRule, que podemos indicar en nuestro archivo de configuración de apache httpd.conf o bien como explicaremos en este artículo en el archivo oculto .htaccess Veamos un ejemplo de archivo .htaccess que pondremos en la raiz nuestro servidor para conseguir el efecto que he explicado al principio de esta web:
| .htaccess |
000 001
|
RewriteEngine on RewriteRule /*/*/ /$1.php?id=$2
|
De esta manera, todo lo que sea /x/y/ se convierte en /x.php/y Este es un ejemplo muy genérico que podriamos aumentar añadiendo más reglas, por ejemplo, imaginar que tenemos una sección foro, en una carpeta y una sección articulos en la raiz, el archivo de configuración sería algo así:
| .htaccess |
000 001 002
|
RewriteEngine on RewriteRule /foro/*/ /foro/mensaje.php?id=$1 RewriteRule /articulos/*/ /articulo.php?id=$1
|
Como veis es muy sencillo, en el primer parametro de RewriteRule indicamos la URL a sustituir, podemos usar comodines ( * en el ejemplo pero existen muchos más) que al coincidir con un grupo de caracteres los guardan en las variables $1, $2 ... $N. En el segundo parámetro indicamos la URL con la que sustituimos la anterior pudiendo usar las variables $1, $2 .. $N guardadas en el parametro 1. |