[Esta entrada fue escrita originalmente el 16 de octubre de 2007 en linkalicante.com, y ha sido trasladada a este nuevo blog el día 15 de febrero de 2010]
Gracias a mi reciente incursión en el mundo de los blogs (www.linkalicante.com), he conocido la posibilidad de utilizar “Mod Rewrite” para crear urls amigables, favoreciendo sobre todo el posicionamiento en buscadores (google) de mis entradas en el blog. Mod_rewrite es un módulo (funcionalidad) del servidor web Apache, que se puede configurar haciendo uso de los archivos “.htaccess”.
ACLARACIÓN IMPORTANTE: mod_rewrite no reescribe la url en la barra del navegador. Esto lo hacemos nosotros. Lo que hace mod_rewrite es traducir esa url amigable que nosotros usamos en nuestros enlaces, por la “url dinámica real” que cargará el contenido correspondiente usando php y mysql (o la tecnología del servidor en cuestión).
Buscando en foros y demás, al final he conseguido entender cómo funciona mod_rewrite, y al mismo tiempo aclarar mis ideas. No he encontrado ningún sitio donde se diga esto claramente, y creo que puede llevar a error a mucha gente. Somos nosotros los que usaremos enlaces del tipo “/categoria/post_bueno_para_google_456.html”, y mod_rewrite hará la “traducción” de forma que finalmente se llame a “/categoria/verpost.php?id=546″.
Mod_rewrite, después de todo, es sólo uno de los muchos módulos que puede incorporar apache. Es realmente potente, pero un poco difícil de entender. Yo no voy a entrar en este post en detalle en la sintaxis de los archivos .htaccess, que es donde indicaremos a mod_rewrite cómo actuar. Simplemente os pongo un pequeño ejemplo:
Options +FollowSymLinks
RewriteEngine on
Rewriterule ^noticia/(.*).html$ noticia.php?n=$1
Las dos primeras líneas activan mod_rewrite. La tercera es la regla que nos dice cómo hacer la “traducción”, y hace uso de expresiones regulares, que es el factor que posiblemente añade más complejidad al asunto.
Os pongo el mejor link que he encontrado sobre este tema (aunque repito que es un poco confuso, porque ni en este ni en otros sitios explican que mod_rewrite no reescribe la url en el navegador. Tú debes llamar a las url amigables en tus enlaces, y mod_rewrite las traduce por las “url feas” reales en php:
http://www.aeoris.net/escritos/apache/reescribir-direcciones-con-mod_rewrite.html
Añado un segundo enlace bastante bueno que he encontrado:
http://perlenespanol.baboonsoftware.com/articulos/archivo/000180.html
Configurar Apache para usar mod_rewrite (httpd.conf)
Para que “mod_rewrite” funcione correctamente en nuestro Apache, es necesario editar httpd.conf y cambiar un par de cosillas:
Es necesario descomentar esta línea:
- LoadModule rewrite_module modules/mod_rewrite.so
Y cambiar un par de cosas en “<directory>”:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
__________________
# “AuthConfig”, and “Limit”
#
AllowOverride All
(en negrita los cambios: None se sustituye por All) (en realidad el All es muy permisivo y podría ocasionar problemas de seguridad, pero si es solo para hacer pruebas nos sirve)
21 responses
Do you want to comment?
Comments RSS and TrackBack Identifier URI ?
Trackbacks