Categorías: Tutoriales

Enlaces permanentes o pretty permalinks con htaccess y Apache

El posicionamiento en buscadores y la progresiva imposición del ecosistema web en el día a día del software, ha obligado a todos los que desarrollamos aplicaciones en la nube,  a cuidar la forma en que aparecen las URL, el producto de esta tendencia son los llamados pretty permalinks. Direcciones que identifican de forma unívoca a contenido y que además en lugar de tener parámetros, tienen una cadena entendible para los humanos.

¿En qué tecnología nos podemos apoyar para llevarlos a cabo? Podemos usar nuestro lenguaje del lado del servidor o directamente también podemos usar a nuestro servidor web. Explicaré en esta entrada cómo hacer enlaces permanentes vistosos usando Apache y .htaccess. Siempre hará falta conocer algo sobre expresiones regulares o patrones. El requisito técnico es que además del servidor web, tengas instalado mod_rewrite.

Objetivo

El ejemplo que vamos a desarrollar convertirá peticiones del tipo http://misitio.com/mipaginahttp://misitio.com/mipagina.php, para que podáis tener:

  • http://misitio.com/contacto usando http://misitio.com/contacto.php
  • http://misitio.com/sobre-mi usando http://misitio.com/sobre-mi.php

¿Útil no?

Código

Este es el código del fichero .htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-z]+-?[a-z]+)/$ /$1.php

Explicación

Y esta la explicación, vayamos por partes, nos interesa la última línea.

  • ¿Qué tenemos? Una regla
  • ¿Qué partes tiene? Cabecera ParteIzquierda ParteDerecha

Veamos, la cabecera es RewriteRule y es el que indica que estamos en una regla para transformar peticiones que llegan al servidor.

La parte izquierda es la parte en la que tiene que encajar la petición. Se sigue como veis la lógica de todos los sistemas basados en reglas, parte izquierda desencadena y parte derecha acción que se desencadena.

¿Pero qué es en realidad lo que tenemos en la parte izquierda? Una expresión regular que indica:

  • [a-z]+: una o más letras en minúscula
  • -?: seguidas o no de un guión (para permitir expresiones del tipo “sobre-mi”)
  • [a-z]+: igual que el primer punto
  • (): todo lo anterior entre paréntesis para tenerlo como una sola variable

Los símbolos ^ y $ identifican el comienzo y el final respectivamente de la expresión regular.

La parte derecha es la acción que se desencadena. Reconozco cadenas del estilo: http://misitio.com/sobre-mi y con lo que he detectado y almacenado en una variable (lo que hay en la expresión regular entre paréntesis), lo tengo en la parte derecha en la variable $1. Es decir, reescribiré la URL que me han enviado de esta forma:

  • Me llega: http://misito.com/sobre-mi, detecto con la expresión regular “sobre-mi” y lo almaceno en $1
  • En la ejecución de la regla reescribo haciendo: lo que he recibido, terminado en .php, por lo que el servidor ejecutaría http://misitio.com/sobre-mi.php pero mostraría la URL http://misitio.com/sobre-mi

Espero que te guste. Si tienes dudas o sugerencias, te esperamos en los comentarios.

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

Entradas recientes

DeepSeek

2 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

4 semanas hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.

1 mes hace