Anoche TSU Cristian DJ me pregunto si alguna vez habia utilizado MOD_REWRITE en Apache, y aunque habia leido alguna vez sobre el tema, nunca lo habia puesto en practica (bajo la premisa de “despues”). Y despues de andarle moviendo como por 15 minutos por fin salio lo que buscaba y como ando buscando tener la mente ocupada, decidi escribir sobre MOD_REWRITE… lo se no es el hilo negro, pero de escribir sobre esto a nada… bueno.
El modo de Apache de MOD_REWRITE basicamente transforma una URL dinamica en una URL Estatica (ojo, solo la URL, no la pagina) con el objetivo de que sea mas “amigable” para los buscadores (lease Google), puesto que las paginas dinamicas pueden crearles bucles o ciclos en la busqueda, y por lo tanto no seran indexadas.
Ejemplo: pagina/index.php?variable=valor
En el caso de las paginas dinamicas en PHP, la URL está separada en dos partes por el signo ?. La primer parte corresponde a la pagina, mientras que las segunda a la(s) variable(s) y sus respectivos valores. Para lograr que los buscadores nos indexen de una manera mas facil (o mejor) deberiamos trasnformarla a travez de la directiva del Apache MOD_REWRITE en algo como esto:
Mod_rewrite: pagina/index/valor.html
Sintaxis de la expresiones regulares que aplican al MOD_REWRITE
- . (punto) cualquier caracter
- [chars] no de los caracteres
- [*chars] ninguno de los caracteres
- ^ Inicio de la cadena
- $ Fin de la cadena
De tal modo que con esto la URL dinamica:
pagina/index.php?variable=rojo
Para poder transformarla se utilizaria la regla:
Rewriterule ^index/(.*)\.html$ index.php?variable=$1
Y debe ser llamada de la siguiente manera:
a href="pagina/index/rojo.html"
Pero se preguntaran donde diablos pongo la regla para hacer la URL dinamicas. En el archivo .htaccess de la carpeta donde vamos a llamar la URL dinamica (ojo aqui). El archivo .htaccess debe estar en nuestro ejempo en la carpeta pagina, no en la carpeta pagina/index (para empezar esa carpeta no deberia ni de existir). Bueno lo que va dentro de este archivo (o agregar al contenido que ya tenga):
Options +FollowSymLinks RewriteEngine on Rewriterule ^index/(.*)\.html$ index.php?variable=$1
De tal suerte que cuando la llamemos por href=”pagina/index/(elvalordelavariable).html”. Recuerden que solo hace la URL estatica no la pagina.
Pero si ustedes tienen mas variables y no todas estas son obligatorias, pues la regla cambiaria a algo asi:
pagina/index.php?variable1=rojo&variable2=1&variable3=yes
Rewriterule ^nombre([^/]+)x([^/]+)x([^/]+)\.html$ index.php?variable1=$1&variable2=$2&variable3=$3
Y puede ser llamado ahora la pagina por URL estaticas a traves de los href (o tambien como normalmente lo harias por php?variable) de la siguientes formas:
index.php?variable1=rojo&variable3=yes href="nombrerojoxxyes.html" index.php?variable2=87&variable3=yes href="nombrex87xyes.html" index.php?variable1=rojo&variable2=87&variable3=yes href="nombrerojox87xyes.html"
Pues cualqueir duda, ahi en los comentarios. Ahi nos vemos que ya se me hizo tarde.
Gracias por incluir que yo te pregunte, buen articulo, tenia dudas en lugar de preguntarte decidi entrar a tu blog gracias Tsu Cristian DJ(Seleccionar comentario)