Como se puede apreciar la regla tomara el nombre del script y le quitara la extensión “.php” para tomarlo como un directorio (nótese la parte en negritas):
Rewriterule ^ (.*)/ (.*),(.*)/(.*),(.*)/$ $1.php ?$2=$3&$4=$5
./i ndex.php ?categoria=monitores&productoID=12345
./ index/ categoria,monitores/productoID,12345/
Seguidamente toma el primer par ?valor=variable y lo transfroma en una subcarpeta valor,variable/ :
Rewriterule ^(.*)/ (.*),(.*)/ (.*),(.*)/$ $1.php ?$2=$3 &$4=$5
./index.php ?categoria=monitores &productoID=12345
./index/ categoria,monitores/ productoID,12345/
Y finalmente hace lo propio con el par &valor=variable y lo transforma en una subcarpeta valor,variable/ :
Rewriterule ^(.*)/(.*),(.*)/ (.*),(.*)/ $ $1.php?$2=$3 &$4=$5
./index.php?categoria=monitores &productoID=12345
./index/categoria,monitores/ productoID,12345/
Como ya se habra dado cuenta, los valores antecedidos por el símbolo dólar ( $ ) en la parte de las URL extensas reemplazan a los (.*) de las URL amigables.
Bueno ya tenemos el archivo .htacces que nos permitirá lograr los resultados que deseamos a nivel del servidor, ahora procederemos a crear el script php que nos permita cambiar nuestras URL extensas en amigables sin tener que hacer ninguna modificación directa en los “N” enlaces que posea nuestro sitio web.
Generando el script en phpEl script php que se usaremos se encargará básicamente de tomar la URL extensa , si esta ha sido pasada mediante el método GET , y la transformará en una URL amigable a la cual redirecionará usando la función header . Puesto que header redirecionará hacia la misma web, y esto causará lo que se conoce como un bucle infinito, se hará uso de variables de sesión que nos ayuden a evitar tal inconveniente; por tal motivo nuestro script se seccionará en 2 partes: la primera irá en las primeras líneas de todas las páginas a las que aplicaremos el script, y la segunda parte (encargada de limpiar la variable de sesión) irá al final de las páginas. Aclarados los detalles, explicaré mediante comentarios el script php:
Como habrán podido ver el script no es complicado, y la adaptación a una web ya constituida tampoco lo será. Ya he probado la técnica en uno de mis proyectos (de manera local) y me ha funcionado bastante bien.
Lo que sí quiero aclarar es que al momento de testear esta técnica en una url de 5 variables a más me generó errores (básicamente no encuentra la url amigable generada); una url de 4 variables redireciona correctamente, pero si luego de ello refresco el navegador genera el mismo error, es decir, no (re)carga la url amigable.
Mi consejo es que usen esta técnica en una url de 3 a menos de 3 variables pasadas por GET y personalicen este script a sus necesidades. Y como es lógico, les aconsejo bastante informarse más sobre el uso del mod_rewrite en Apache, creanme que les aliviará más de un dolor de cabeza.
Usuarios que han visto este tema también han visto...
- Recortar texto en PHP
- Autentificación HTTP con PHP
- Nubes de etiquetas en PHP
- Verificar la existencia de una url
- Codificar contraseñas md5
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.