Taller de Lenguajes

Haciendo direcciones web amigables. PDF Imprimir Correo electrónico
Jueves 26 de Febrero de 2009 15:42

Cuando trabajamos con páginas dinámicas, es muy frecuente enviar algunos parámetros por la URL utilizando el método GET de comunicación con el Servidor Web. Esto nos permite fácilmente crear el contenido de la página en base a esos parámetros, pero trae como desventaja que las direcciones Web son difíciles de memorizar para una persona que quiera enlazar o recordar esa página. Una desventaja, aún peor, es que si tenemos muchos parámetros en la URL, a Google y los demás motores de búsqueda se le hace difícil poder seguir estos enlaces y hasta puede penalizar el sitio por detectar contenido dinámico.

 La solución a estos problemas es crear lo que se denominan direcciones Web amigables, utilizando el método del Servidor Web Apache mod_rewrite.

 En esta nota vamos a aprender qué es mod_rewrite y cómo utilizarlo en nuestro Sitio Web.

 

 

¿Qué es mod_rewrite?

Mod_rewrite es un módulo de Apache que se ejecuta después de hacer un request al Servidor y antes de ejecutar cualquier script. Este módulo utiliza filtros para convertir una dirección solicitada en otra, que será finalmente la que se ejecute en el Servidor. Esta conversión se hace de manera transparente para el usuario.

 

 

 

  Bien, a esta altura, seguramente, ya estás convencido de utilizar mod_rewrite.

 

 Hay que destacar que el navegador puede solicitar cualquiera de las dos direcciones, y accederá al mismo recurso. En el Servidor no existe una carpeta “catalogo”, pero de esto el usuario no se entera, por lo tanto utilizar este método nos da mayor seguridad porque ocultamos información a los navegantes curiosos o a aquellos que quieran atacar nuestra aplicación.

 Es importante aclarar que la redirección se realiza en el mismo Servidor, es decir, que es una redirección interna, y el usuario va a estar viendo en su barra de direcciones del navegador la URL solicitada (no la convertida).

 Ahora nos dejamos de detalles técnicos y pasamosa lo que estabas esperando, cómo crear nuestras direcciones Web amigables,

 

Usando mod_rewrite

 Supongamos que tenemos una página que muestra información de artículos por categorías. Para hacerlo bien simple, tenemos dos categorías, productos (categoría 1) y servicios (categoría 2) y accedemos a elles a través de los enlaces

www.aplicacion.com/catalogo.php?cat=1
www.aplicacion.com/catalogo.php?cat=2

 Ahora veamos los pasos que tenemos que seguir

  1.  El paso obvio y fundamental: tener activo el módulo mod_rewrite  en el Apache. Por defecto se instala en la mayoría de los Servidores de Hosting, pero conviene verificarlo consultando al administrador del servidor.
  2. Ahora tenemos que definir los filtros en el archivo .htaccess que se encuentra en la raíz del sitio. El filtro es lo que utiliza el módulo para realzar la conversión, y tiene la siguiente forma:

 rewriterule <secuencia a encontrar:pattern> <cadena para sustituir:substitution>

 Pattern es una expresión regular la cual es aplicada a la dirección URL actual.

Nuestro .htaccess deberá tener las siguientes líneas 

Options FollowSymLinks
ewriteEngine on
Rewriterule ^catalogo/(.*).php$ catalogo.php?cat=$1

 

Analicemos un poco estas líneas

  • rewriteengine on activamos el módulo
  • Rewriterule: avisa al módulo que hay una nueva regla, un nuevo filtro.
  • Los paréntesis dan valor a variables de la expresión regular, que serán nombradas $1, $2, etx. En esta regla estamos tomando el nombre del archivo y guardándolo en la variable $1.
  • Luego, en la segunda parte de la regla, indicamos que traduzca la dirección a catalogo.php?cat= {nombre del arhivo que estaba en la variable $1]

 El módulo trabaja de la siguiente manera:

Dirección solicitada: catalogo/1.php
Se convierte en catalogo.php?cat=1.

Por lo tanto, de ahora en más, en los enlaces o menús, deberemos ingresar la dirección

catalogo/1.php

Importante: se deben utilizar direcciones relativas en el filtro, es decir que no hay que poner el dominio.

 

Al utilizar mod_rewrite en nuestro sitio, podemos tener problemas al hacer referencias a otros enlaces o archivos CSS. Para eso solamente tenemos que agregar la siguiente línea en el HEAD del código HTML.


<head>
       <base href="/ www.aplicacion.com " />
</head>

 

Con esto tenemos los pasos básicos para configurar el mod_rewrite para crear direcciones amigables..

 

La funcionalidad de mod_rewrite abarca mucho más que esto, y con el uso de expresiones regulares se pueden crear filtros más complejos para optimizar nuestras URLs., y hacer más eficientes los ejemplos que mencionamos en este artículo. Creo que es suficiente para hacer una introducción al uso del mod_rewrite.

 

Recursos para seguir aprendiendo

 Mod_rewrite - Apache

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

 

Expresiones Regulares - Wikipedia

http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular:

 

Comentarios
Añadir nuevo Buscar RSS
Escribir comentario
Nombre:
Email:
 
Website:
Título:
 
Por favor introduce el código anti-spam que puedes leer en la imagen.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Menú Principal

Ingreso de Usuarios



Actualidad

Encuesta

¿Cuál es tu lenguaje de programación favorito?
 
Copyright © 2012 Taller de Lenguajes. Todos los derechos reservados.
Joomla! es software libre publicado bajo la licencia GNU/GPL.