Pretty-urls en PHP

marzo 23, 2011

Usar las llamadas pretty-url o url elegantes es útil para dos cosas:
– hace más usables las direcciones de nuestras páginas web. Eso es importante cuando la gente guarda la página es sus marcadores, o en del.icio.us, o al reenvíar a un amigo.
– las leyendas urbanas dicen que así se mejora el ranking para buscadores. En realidad, los buscadores escarban igual en una web con pretty-url que si ella (bueno, parece que ahora en 2014 google puntua mejor a las web con url amigables).
Lo que si resulta más fácil es revisar los informes de google: ¿que te dice que la página mas vista es http://www.example.org?id=100.

Para implementar estas URL solo hay que:
– definir el fichero .htaccess adecuadamente
– añadir un poco de programación.

Hay dos modos de capturar las url amigables:

1) MÉTODO CON GET.
Este es el método que utiliza por ejemplo Drupal. Mediante el modulo mod_rewrite de Apache, configurado adecuamente en .htaccess todas las peticiones web se redirigen a la página principal con un parámetro (a menudo llamado q) con la información restante. Es decir

http://miblog/articulos/uno-muy-bueno se convierte en
http://miblog/index.php?q=articulos/uno-muy-bueno

El código sería asi:
.htaccess

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ./index.php?q=$1 [QSA]

En PHP tendríamos que usar $_GET para recuperar los datos:
$q= $_GET[‘q’]
$parametros= split(“/”,$q)

Ventajas: sencillo, funciona en un dominio desconocido (* ver segundo método)

2) MÉTODO CON REQUEST_URI
Que usa wordpress. En este método no se captura nada con get sino que se consulta la URL original guardada en $_SERVER[‘REQUEST_URI’].

.htaccess

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule . ./index.php

en php
$paths= parse_url($_SERVER[‘REQUEST_URI’,PHP_URL_PATH);
parse_str( parse_url($_SERVER[‘REQUEST_URI’],PHP_URL_QUERY), $query);

Ventajas: se captura todo.
Desventaja: se captura demasiado. Si la web esta en un directorio también se captura.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: