Como implementar URL amigables

Creado por richard  el 2015-03-11 00:07:28
Editar

Como su propio nombre lo indica las URL amigables son aquellas que son más fáciles de recordar para el usuario ya que no están formadas con las acostumbradas cadenas compuestas de variables GET.
También su uso se justifica por fines estratégicos para mejorar el posicionamiento de nuestro sitio web, esto ocurre por una cuestión de semántica debido a que los buscadores favorecen el indexado de este tipo de URL frente a las URL convencionales o no semánticas.

Para crear nuestras URL amigables utilizaremos un módulo de apache llamado mod_rewrite, el cual nos permitirá reescribir las URL al vuelo.

En este artículo revisaremos solo algunas directivas de este módulo, las que nos permitirán reescribir nuestras URL, pueden ver la documentación completa del módulo en el link oficial.

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

Así se ven las URL convencionales.
http://www.mipagina.com/index.php?seccion=noticias&id_noticia=360

Así se ven las URL amigables.
http://www.mipagina.com/noticias/360/url-amigables

Lo primero que tenemos que hacer crear o editar el archivo .htaccess el cual se encuentra en la raíz de nuestro sitio, el archivo .htaccess es un fichero de configuración utilizado por el servidor apache.

Para que esto funcione debemos tener el módulo rewrite activado en apache, puedes comprobarlo con la función phpinfo() desde PHP.

code: php
<?php
phpinfo(INFO_MODULES);
?>


Bien nuestro archivo .htaccess debe quedar de esta manera.

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^.*$ index.php [L]

Las primeras líneas son para configurar algunas directivas de apache como permitir los enlaces simbólicos, activar la reescritura de URL y establecer la base.

Nos centraremos en la línea RewriteRule ^.*$ index.php [L]

^ Denota "el principio" del argumento.
. Un punto (o periodo) indica cualquier carácter arbitrario único.
* Indica que el carácter, cadena o grupo anterior puede estar presente cero o más veces
$ Denota "el fin" del argumento.
[L] Last rule (Última Regla): instruye al servidor para frenar la reescritura tras procesar la directiva precedente.

Entonces ^.*$ este patrón se traduce en que una cadena puede comenzar por cualquier carácter y puede terminar con cualquier carácter, incluso puede ser una cadena vacía.

Lo que logramos hacer es reescribir cualquier URL redirigiéndola al archivo index,php logrando de esta manera tener un control centralizado de nuestro sitio.
Todo lo demás se debe gestionar desde PHP por ejemplo una cadena como la siguiente:

www.mipagina.com/noticias/360/url-amigables
siempre será direccionada a index.php

index.php
code: php
<?php
print_r($_SERVER['REQUEST_URI']);
#Imprime
#/noticias/360/url-amigables
?>

Como ven es muy fácil recuperar toda la información de la URL se pueden obtener todos los datos de la petición mediante la variable $_SERVER['REQUEST_URI'], ya en este punto podemos recomponer las variables GET con absoluta libertad.

index.php
code: php
<?php
#print_r($_SERVER['REQUEST_URI']);
$segments = explode('/', $_SERVER['REQUEST_URI']);
$seccion = $segments[1];
$id_noticia = $segments[2];
echo "seccion = $seccion<br />id_noticia = $id_noticia";
#Imprime
#seccion = noticias
#id_noticia = 360
?>

Por lo general el nombre de la noticia es opcional, si se quiere incluir el titulo en la URL lo correcto sería cargar el articulo segun su id desde la base de datos, recuperar el titulo y luego compararlo con el de la URL para asegurarnos que el articulo no ha cambiado de nombre, previniendo de esta manera tener URl duplicadas que son penalizadas por los buscadores en sus resultados.

Existen varias formas de implementar URL amigables en nuestro sitio pero a mi parecer esta es una de las mas simples y eficientes.
Servidor Web más utilizado, con mayor número de instalaciones a nivel mundial, es un proyecto de código abierto y uso gratuito, multiplataforma.
Conjunto de datos de un mismo contexto y almacenados sistemáticamente para su posterior uso.
Lenguajes que hacen referencia al codigo de marcado para la elaboración de páginas web.
Potente lenguaje de programación orientado a objetos, independiente del sistema operativo.
Lenguaje interpretado orientado a objetos desarrollado por Netscape que se utiliza en millones de páginas web y aplicaciones de servidor en todo el mundo
Sistema operativo de software libre inspirado en el sistema Unix, escrito por Linus Torvalds con la ayuda de miles de programadores en Internet
El modelado 3D es el proceso de desarrollo de una representación matemática de cualquier objeto tridimensional a través de un software especializado. Al producto se le llama modelo 3D
Lenguaje de programación principalmente orientado al desarrollo web, su código es ejecutado del lado del servidor.
Todo lo que no sea trabajo, solo temas recreativos para divertirse.