mod_rewrite: URLs limpias sin perder archivos ni parámetros

Publicado 2 min de lectura Revisado
Ver imagen del artículo
Rack con varios servidores de 1U con pantallas verdes y cables blancos conectados al frente

mod_rewrite permite transformar cómo Apache resuelve una URL sin obligar al visitante a conocer la estructura interna de los archivos. Para una aplicación con un controlador frontal, una petición como /articulo/terminal puede terminar en index.php.

Apache / la ruta de una url. El controlador frontal recibe las rutas de la aplicación
Diagrama explicativo creado para esta entrada; no es una captura de producto.

Una base para un controlador frontal

En un .htaccess situado en la raíz de la aplicación:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

Las condiciones dejan pasar archivos y directorios que existen. La regla envía el resto al controlador. Dentro de .htaccess, el patrón no recibe una barra inicial como si fuera la URL completa.

Esto exige que Apache tenga el módulo y permita las directivas correspondientes. Si Nginx atiende la petición sin pasar por Apache, .htaccess no participa.

Reescritura y redirección

Una reescritura interna cambia el destino dentro del servidor. Una redirección devuelve una respuesta para que el navegador pida otra URL. No añadas una redirección permanente mientras pruebas: puede quedar almacenada en caché.

[L] termina la ronda actual de reglas. [QSA] sirve para combinar la consulta original con una nueva consulta introducida por la sustitución; no hace falta añadirlo por costumbre a todas las reglas.

La ruta todavía debe validarse

Una URL bonita no convierte su contenido en fiable. Valida los parámetros en la aplicación y utiliza consultas preparadas al acceder a la base de datos. Prueba rutas existentes, inexistentes, archivos estáticos y URLs con parámetros antes de activar el cambio.

Referencia: mod_rewrite de Apache.

Compartir esta entrada WhatsApp X / Twitter LinkedIn Reddit Telegram Bluesky Email
Siguiente comando: volver al archivo o pulsa Ctrl + K
Hilo abierto

La conversación empieza aquí

Escribir un comentario

Nadie ha escrito todavía. Si lo has probado en tu máquina, cuenta qué te salió: otra versión u otro resultado también ayudan.

Escribe tu comentario

Si planteas un problema técnico, di sistema, versión, qué esperabas y qué has probado. Respeto y cero spam: tu correo no se publica.

0 caracteresCtrl + Enter para enviar

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.