Cómo crear URLs amigables mediante el archivo htaccess

Todo el mundo quiere posicionar su sitio web en la primera página de resultados de los principales buscadores. Hay muchos factores que influyen en el posicionamiento en buscadores, y uno de ellos son las URLs legibles por humanos o URLs amigables. Una URL amigable debe reflejar el contenido del sitio web o del blog.

Hay dos maneras de urls amigables en PHP. Una de ellas es utilizando el método REQUEST_URI, y la segunda manera es a través del archivo .htaccess. En este tutorial, voy mostraros como llevar a cabo las URLs amigables para vuestro blog o sitio web mediante el archivo .htaccess. Puedes utilizar esta misma práctica para implementarlo en cualquier tienda online.

Empezamos

Supongamos que tu sitio web ha sido desarrollado utilizando código PHP personalizado, es decir, un desarrollo a medida. Por lo tanto, cada vez que se insertas una nueva entrada en tu blog, la URL será generada de la siguiente manera:

www.yoursite.com/index.php?blog_id=1234

En este tutorial, vamos a cambiar la dirección de arriba por esta otra:

www.yoursite.com/my-seo-url/

Así que, cada vez que una persona visite la URL anterior, se generará el mismo contenido que se genera cuando proporcionas el ID del artículo en la URL.

Paso 1: Cambios en la tabla

En primer lugar, tienes que modificar la tabla en la que se guarda el artículo. Crea una nueva columna en ella y llámala seo-url.

Paso 2: Función para implementar urls amigables

Vamos a crear una función que generará las urls amigables por ti, basándonos en el título del artículo.

function seo_url($vp_string){
   $vp_string = trim($vp_string);
   $vp_string = html_entity_decode($vp_string);
   $vp_string = strip_tags($vp_string);
   $vp_string = strtolower($vp_string);
   $vp_string = preg_replace('~[^ a-z0-9_.]~', ' ', $vp_string);
   $vp_string = preg_replace('~ ~', '-', $vp_string);
   $vp_string = preg_replace('~-+~', '-', $vp_string);
   $vp_string .= "/";
   return $vp_string;
}

A la función anterior se le pasará el título del artículo como una cadena y devolverá la cadena de la url amigable. Tal que así:

my-SEO-URL/

Tendrás que almacenar esta URL en la misma columna que hemos creado en el paso anterior.

Paso 3: Cambios en el archivo .htaccess

Puesto que ya hemos generado una url amigable, debemos hacer algunos cambios en el fichero .htaccess, ya que será el encargado de redirigir la nueva URL al contenido que se guarda en la base de datos. Si no lo has creado, a continuación, crea un nuevo archivo de texto plano y llámalo .htaccess. Ahora pega el siguiente código en él:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9]+[-]+[A-Za-z0-9]+)+[/])$  index.php?blog_url=$1    [NC,L]    # Handle blog requests

Vamos a comprender paso por paso el anterior código:

La primera línea indica a Apache que vamos a reescribir ciertas reglas

RewriteEngine On

La segunda y tercera línea es una condición, que comprueba si la URL llamada es un archivo o un directorio real. Si esta condición es cierta, no podrá reescribirse la URL.

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

Y la última línea es la reescritura de la URL. Así es cómo funciona: La cadena de después de RewriteURL, es decir, "^ (([A-Za-z0-9] + [-] + [A-Za-z0-9] +) + [/]) $", es una expresión regular que comprueba el trozo de URL de después de la barra “/", después del nombre de dominio completo.

Ahora bien, si la URL se corresponde con la expresión regular, la URL enviada será redirigida a index.php?blog_url=(url enviada), donde podremos manipularla en la variable blog_url.

Atención: Si tienes un error en el archivo .htaccess, obtendrá un error 500 en el servidor.

Paso 4: Cambios en el archivo index

Ahora en el archivo index.php podrás obtener la url utilizando la variable $_GET['blog_url']. Ya solo queda que consultes la tabla filtrando por la columna que acabamos de crear con ese valor y podrás mostrar el artículo requerido rápidamente. Por ejemplo, en el archivo index.php la consulta a la base de datos se llevará a cabo de la siguiente manera:

$url = $_GET['blog_url'];

$query = "SELECT articles.article_name,articles.article_content,categories.category_name,articles.img,users.u_fname,users.u_lname,DATE_FORMAT(articles.date,'%d %b, %Y') as dates

FROM article

INNER JOIN users

ON users.user_id = article.user_Id

INNER JOIN articles

ON articles.article_id = article.article_id

INNER JOIN categories

ON categories.category_id = articles.category_id

WHERE articles.url = '$url'";

Por lo demás no tendrás que cambiar ni una coma de los otros archivos. Cuando ejecutes la nueva URL, obtendrás el mismo contenido que obtenías cuando enviabas los identificadores de los artículos por URL.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.