Cómo conseguir URL amigables con la modificación del archivo .htaccess

El archivo .htaccess es un archivo de configuración de Apache, el más popular de los servidores web, que se encuentra en la mayoría de los espacios de alojamiento. De modo general, ese archivo es capaz de alterar la configuración del servidor web, aplicando esos cambios al directorio donde el .htaccess esté situado y todos los directorios que dependen de él.

En la práctica, este fichero se usa para muchas cosas como, por ejemplo, proteger una carpeta por clave, activar la compresión de los ficheros que se transfieren, etc. En este artículo profundizamos en uno de los mejores usos que le podemos destinar: la creación de URL amigables.

Las URL amigables son básicamente direcciones de páginas que son más fáciles de escribir, recordar y sobre todo, que Google interpreta de con mayor relevancia. Por ejemplo, podríamos tener una URL como: example.com/tienda.php?productos=zapatillas&categoria=playa, pero es una URL poco atractiva para buscadores y usuarios, aparte que muestra nuestra programación. Sería mucho mejor una URL como esta: example.com/productos/zapatillas/playa.

Es una dirección más concisa, fácil de escribir y que se centra en lo que realmente importa, sin mostrar el contenido de las variables que se usan a nivel de programación.

Cómo crear URLs amigables

Esta tarea básicamente se trata de configurar un sistema de redirecciones para que, de la URL amigable, internamente y de manera transparente para el usuario, se transfiera la solicitud a la página real que la va a servir. Es decir: es como una traducción de la URL amigable a la URL no amigable.

Lo haremos, como decíamos, gracias al archivo .htaccess. Primero tenemos que crear ese archivo y guardarlo generalmente en la carpeta raíz del dominio. El .htaccess es un archivo de texto plano, que tendremos que editar.

Para comenzar debemos indicar que se ponga en marcha el motor de reescritura de URL con esta línea:

RewriteEngine on

Luego tenemos que generar las redirecciones con la instrucción RewriteRule, indicando primero el patrón de la URL amigable y la redirección que se debe producir. Dicho patrón se debe colocar como una expresión regular y a continuación colocamos la URL a la que se debe redirigir la solicitud.

RewriteRule ^productos/([a-zA-Z]+)/([a-zA-Z]+)$ tienda.php?productos=$1&categoria=$2

Para explicar esta regla, la vamos a descomponer:

  • “^” es el inicio de una expresión regular para definir el patrón de URL amigable
  • “productos/” es una serie de caracteres que figurarán en toda URL que se desee redirigir.
  • “([a-zA-Z]+)” eso es una expresión regular que dice que habrá una o más repeticiones de letras, minúsculas o mayúsculas
  • “/” hay un separador de barra entre las dos repeticiones
  • “([a-zA-Z]+)” vuelve a figurar el patrón de repeticiones de letras.
  • “$” es el final del patrón.

A partir de ahí encontramos la URL a la que redirigimos la solicitud. Que estará en el archivo tienda.php, enviándole como parámetros “productos” y “categoria”. $1 corresponde con el primer patrón “([a-zA-Z]+)” y $2 con el segundo, tal como están indicados en la expresión regular.

Este sería otro ejemplo completo de modificación del archivo .htaccess que puede ayudarnos a crear URL amigables para distintos productos:

# Activar RewriteEngine
RewriteEngine on

RewriteCond %{SERVER_PORT} 80

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f

#   Reescribir la URL solicitada por el usuario

#   Home
RewriteRule ^inicio$ /index.php [L]

#   Producto
#   Entrada: producto/NOMBRE_PRODUCTO/
#   Salida: productos.php?id=NOMBRE_PRODUCTO
RewriteRule ^producto/(.*)$  /productos.php?id=$1 [L]

La verdad es que el .htaccess para el tema de redirecciones da para mucho más de lo que hemos visto, pero con esto nos podemos hacer una idea muy buena de cómo funciona y seguro que tendremos en la cabeza ideas frescas que implementar en nuestros sitios alojados en el servidor web Apache.

Si estás interesado en el tema, también puedes consultar los artículos Redirección 301 con htaccesConfiguración de directorios con .htaccess o Códigos de ejemplo para redirigir tu sitio web.

Share on FacebookTweet about this on TwitterShare on LinkedIn