Uso de MOD_REWRITE
Como desarrolladores sabemos que es muy importante hacer las cosas mas faciles a los usuarios y que mejor si usamos el modulo de apache MOD_REWRITE para hacer URL AMIGABLES.
MOD_REWRITE es un modulo del servidor web Apache que permite crear URL alternativas a nuestras páginas dinámicas de forma que sean mas fáciles de recordar y también mejor indexadas por los buscadores.
Esto nos permite que un URL de la forma:
-
http://www.sample.com/producto.php?cat=monitor&subcat=lcd
Se pueda acceder mediante:
-
http://www.sample.com/monitor/lcd/
Como Funciona?
Para utilizar MOD_REWRITE es necesario crear una serie de reglas basadas en Expresiones Regulares el cual permite identificar un determinado patrón y reescribirla. Internamente Apache procesará el URL resultante y se le mostrará al cliente.Estas reglas se escriben y colocan en un archivo de configuración llamado .htaccess el cual se encuentra en la raíz del servidor donde se quieren aplicar estas reglas.
Utilizando MOD_REWRITE
Lo primero es crear un archivo .htaccess, en el cual incluimos código para activar la opción de reescritura y luego utilizamos el comando RewriteRule en donde pasamos dos parámetros, el primero de ellos es el URL que vamos a reemplazar y el segundo es el URL que utilizaremos de reemplazo.
Luego si deseamos convertir nuestro URL de ejemplo, utilizaremos el siguiente código.
-
Options +Indexes
-
Options +FollowSymlinks
-
RewriteEngine on
-
RewriteBase /
-
RewriteRule ^(.*)/(.*)/ products.php?cat=$1&subcat=$2
Nótese que $1 representa la primera coincidencia y $2 la segunda coincidencia buscada en el URL. Ahora hay que notar que esto es para cuando se desea aplicar la regla a un URL que esta en la raiz del servidor. Si nuestro URL esta en una carpeta por ejemplo llamada rewrite, entonces cambiamos el comando RewriteBase que indica la carpeta base a donde se aplicará la reescritura.
-
Options +Indexes
-
Options +FollowSymlinks
-
RewriteEngine on
-
RewriteBase /rewrite/
-
RewriteRule ^(.*)/(.*)/ products.php?cat=$1&subcat=$2
Luego si creamos un PHP que imprima las variables que se les pasa por URL, tendríamos el siguiente código de ejemplo.
Finalmente podemos ver que podemos obtener el mismo resultado al acceder a las siguientes URLs, las cuales devuelven el mismo resultado, pero obviamente la segunda forma es mucho mas corta y mas fácil de recordar.
http://neozeratulenlared.com/rewrite/products.php?cat=monitor&subcat=LCD
http://neozeratulenlared.com/rewrite/monitor/LCD/
Si desean mas información pueden leer mod_rewrite en la documentación oficial de Apache en donde encontrarán una guía muy detallada de como crear y utilizar reglas para las URLs.
Finalmente para los interesados les dejo los archivo fuente de este ejemplo.
Gracias a unijimpe.
