Inicio > APACHE, PROGRAMACION > Uso de MOD_REWRITE

Uso de MOD_REWRITE

Viernes, 1 de Febrero de 2008 Neozeratul Dejar un comentario Ir a comentarios

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:

  1. http://www.sample.com/producto.php?cat=monitor&subcat=lcd

Se pueda acceder mediante:

  1. 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.

  1. Options +Indexes
  2. Options +FollowSymlinks
  3. RewriteEngine on
  4. RewriteBase /
  5. 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.

  1. Options +Indexes
  2. Options +FollowSymlinks
  3. RewriteEngine on
  4. RewriteBase /rewrite/
  5. 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.

  1. <?php
  2. // file: products.php
  3. echo “<b>Categoría: </b>\t . $_GET["cat"] . “<br>”;
  4. echo “<b>SubCategoría</b>\t: “ . $_GET["subcat"] . “<br>”;
  5. ?>

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.

  1. Sin comentarios aún.
  1. Sin trackbacks aún.