Loading...

Como implementar URL amigables

Creado por superadmin  2015-03-11 00:07:28  Apache, Nginx, IIS

URL amigables

Las URL amigables, como su nombre lo sugiere, son direcciones web fáciles de leer, recordar y compartir. A diferencia de las URL tradicionales basadas en parámetros GET, estas utilizan una estructura más limpia y descriptiva. Esto no solo mejora la experiencia del usuario, sino que también aporta beneficios en términos de posicionamiento SEO, ya que los motores de búsqueda tienden a favorecer URLs con contenido semántico claro.


Para implementar este tipo de URL utilizaremos el módulo de Apache mod_rewrite, que permite reescribir direcciones web de forma dinámica. En este artículo veremos una configuración básica pero efectiva. Si deseas profundizar, puedes revisar la documentación oficial:

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

Ejemplo de URL tradicional:

http://www.mipagina.com/index.php?seccion=noticias&id_noticia=360

Ejemplo de URL amigable:

http://www.mipagina.com/noticias/360/url-amigables

El primer paso es crear o editar el archivo .htaccess, ubicado en la raíz de tu sitio web. Este archivo permite definir reglas de configuración para Apache. Para que funcione correctamente, asegúrate de que el módulo mod_rewrite esté habilitado. Puedes verificarlo utilizando phpinfo():

<?php
phpinfo();
?>
Configuración Apache

Una configuración básica del archivo .htaccess sería la siguiente:

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

Veamos qué significa esta configuración:

  • Options +FollowSymLinks: permite el uso de enlaces simbólicos.
  • RewriteEngine On: activa el motor de reescritura.
  • RewriteBase /: define la ruta base para las reglas.
  • RewriteRule ^.*$ index.php [L]: redirige todas las solicitudes a index.php.

El patrón ^.*$ es una expresión regular que coincide con cualquier cadena:

^ indica el inicio de la cadena.

. representa cualquier carácter.

* permite repetir el carácter anterior cero o más veces.

$ indica el final de la cadena.

[L] indica que es la última regla que se debe aplicar si coincide.

En la práctica, esto significa que cualquier URL será redirigida a index.php, lo que permite centralizar el control de rutas en un solo archivo. Por ejemplo:

www.mipagina.com/noticias/360/url-amigables

Será procesada internamente por:

index.php

Desde PHP, puedes acceder fácilmente a la URL solicitada mediante la variable $_SERVER['REQUEST_URI']:

<?php
echo $_SERVER['REQUEST_URI'];
?>

Con esta información, puedes procesar la ruta, dividirla en segmentos y reconstruir las variables necesarias (por ejemplo, sección e ID).

<?php
$url = $_SERVER['REQUEST_URI'];
$partes = explode('/', trim($url, '/'));

$seccion = $partes[0] ?? null;
$id_noticia = $partes[1] ?? null;

echo "Sección: $seccion\n";
echo "ID noticia: $id_noticia";
?>

El uso del título en la URL es opcional, pero recomendable para SEO. Sin embargo, lo correcto es siempre identificar el contenido por un ID único. Luego puedes validar que el título en la URL coincida con el almacenado en la base de datos para evitar contenido duplicado.

Por ejemplo:

  • Cargar el artículo por ID.
  • Generar el slug correcto del título.
  • Compararlo con el de la URL.
  • Si no coincide, redirigir a la URL correcta (canonical).

Este enfoque evita penalizaciones por URLs duplicadas y mejora la consistencia del sitio.

Existen múltiples formas de implementar URL amigables (frameworks, routers, etc.), pero este método es una de las soluciones más simples, flexibles y eficientes cuando se trabaja con PHP puro.

Developed by Richard Collao Olivares

Software CMS Copyright © 2017 - 2026 All rights reserved