URLs amigables con .htaccess y PHP

6
80

Las URLs amigables siempre ayudan al mejor posicionamiento en los motores de búsqueda de Internet, también para que los usuarios reconozcan fácilmente la URL actual, esta técnica ya la tienen implementada muchos websites, WordPress tambien la tiene implementada, pero para los que no usamos esta herramienta este tutorial les servira para crear URLs amigables.
Srinivas Tamada de 9lessons creo un tutorial con 2 tipos de URLs amigables basadas en Flickr y Twitter.

URL amigable estilo Flickr

Vemos que tiene 2 parámetros: “polvero” y “page2“, para lograr este resultado en nuestro website tendremos que agregar este código a nuestro .htaccess
[php]
//primer parámetro
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ users.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ users.php?user=$1
//segundo parámetro
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ users.php?user=$1&page=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ users.php?user=$1&page=$2
[/php]
URL Original
http://flickr.com/users.php?id=username&page=2
URL amigable
http://flickr.com/username/2

URL amigable estilo Twitter

viendo la imagen nos damos cuenta que no puede existir un usuario “login”, “home” ni “terms”, esto se logra mediante un filtro a la hora del registro con palabras reservadas, y al mostrarlo podemos combinar un poco de .htaccess y PHP para lograr el objetivo.
Código .htaccess
[php]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?key=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?key=$1
[/php]
Código PHP (index.php)
[php]
$key=$_GET[‘key’];
if($key==’home’){
include(‘home.php’); // Home page
}else if($key==’login’){
include(‘login.php’); // Login page
}else if($key==’terms’){
include(‘terms.php’); // Terms page
}else{
include(‘users.php’); // Users Gateway
}
[/php]

6 COMMENTS

  1. Hay un problemamilla con las URL amigables y es lo siguiente:
    al cargar una seccion llamando la url ej. ” articulos/elecciones ” me lleva adecuadamante y pasa la variable a index.php, PERO las imagenes y archivos dentro de index no me cargan bien por toma la posicion de carpeta como ” articulos ” ej. tengo no me carga pero si coloco si carga pero no quiero usar esto… necesito que me carguen adecuandamente las imagenes y hojas de estilo si necesidad de reajustar las rutas.
    Espero puedas ayudarme con esto y gracias por tu colaboracion.

  2. @Miguel, gracias por notar este error, para solucionar este problema solo bastara con poner estas lineas faltantes en el .htaccess
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?key=$1
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?key=$1
    Esto reconocera las carpetas y archivos para mostralas adecuadamente.
    Saludos

  3. Hola,
    estoy buscando la solución para algo similar pero sin éxito, he probado de varias formas pero me da error y no muestra la página,
    quiero cambiar esto http://url/usuarios?user=pepito por
    http://url/usuarios/pepito
    y mi htacces esta de esta forma
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    RewriteRule ^([a-zA-Z0-9_-]+)/$ usuarios?user=$1
    pero cuando pongo la url me da error, ¿me puedes ayudar?, gracias.

Comments are closed.