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]
Muy buen post, siempre ofreciendo contenido útil y de calidad, como te dije hace unas semanas por Facebook.
Saludos y felices fiestas! 🙂
Sólo aclarar que ES OBLIGATORIO, tener el mod_rewrite habilitado en el apache para que esto funcione.
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.
@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
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.
hola, como podria cambiar una url que llame contendo.php por flores-medellin.php si es que se puede.
gracias
Comments are closed.