Skip to main content

Introducción

Laravel proporciona varios helpers para generar URLs de tu aplicación. Son especialmente útiles al construir enlaces en plantillas o respuestas de API, o al generar respuestas de redirección a otra parte de la aplicación.

Uso básico

Generar URLs

Con el helper url puedes generar cualquier URL. La URL generada utiliza automáticamente el esquema (HTTP o HTTPS) y el host de la solicitud actual.
Para generar una URL con parámetros de query string, usa el método query.
Si indicas parámetros de query que ya existen en la ruta, se sobrescriben los valores existentes.
También puedes pasar valores como array. Estos valores se indexan correctamente y se codifican en la URL generada.

Obtener la URL actual

Si no pasas una ruta al helper url, se devuelve una instancia de Illuminate\Routing\UrlGenerator que da acceso a información sobre la URL actual.
También puedes acceder a estos métodos con la fachada URL.

Obtener la URL anterior

A veces querrás saber la URL que visitaba el usuario justo antes. Puedes obtenerla con previous o previousPath del helper url.
También puedes obtenerla a través de la sesión.
Y también el nombre de ruta de la última URL visitada.

URLs de rutas con nombre

El helper route sirve para generar URLs de rutas con nombre. Con rutas con nombre puedes generar URLs sin depender de la URL real definida en la ruta. Así, aunque la URL cambie, no necesitas modificar las llamadas a route.
Genera la URL a esta ruta así:
También funciona con rutas de varios parámetros.
Los elementos del array que no coincidan con parámetros de la ruta se añaden como query string.

Modelos Eloquent

Es habitual generar URLs con la clave de ruta (normalmente la clave primaria) de un modelo Eloquent. Puedes pasar el modelo directamente como parámetro. route extraerá automáticamente la clave de ruta del modelo.

URLs firmadas

Laravel facilita la creación de URLs “firmadas” a rutas con nombre. A la URL se le añade un hash de “firma” en el query string, lo que permite a Laravel comprobar que la URL no ha sido manipulada tras su creación. Las URLs firmadas son muy útiles en rutas de acceso público que necesitan protección frente a manipulación. Por ejemplo, puedes usar URLs firmadas para implementar un enlace público de “cancelar suscripción” que envías por correo. Créalas con signedRoute de la fachada URL.
Con el argumento absolute de signedRoute puedes excluir el dominio del hash de firma.
Para generar una URL firmada temporal que caduque tras un tiempo dado, usa temporarySignedRoute. Al validar una URL firmada temporal, Laravel comprueba que el timestamp de caducidad codificado en la URL no haya pasado.

Flujo de verificación de la URL firmada

Verificar solicitudes con ruta firmada

Para comprobar que la solicitud entrante tiene una firma válida, llama a hasValidSignature sobre la instancia Illuminate\Http\Request.
Si quieres ignorar ciertos parámetros del query string al validar, usa hasValidSignatureWhileIgnoring.
En lugar de la instancia de la solicitud, puedes asignar el middleware signed (Illuminate\Routing\Middleware\ValidateSignature) a la ruta. Si la solicitud no tiene una firma válida, el middleware responde automáticamente con 403.
Si la URL firmada no incluye el dominio, indícalo con el argumento relative en el middleware.

Respuesta a rutas firmadas no válidas

Cuando se accede a una URL firmada caducada, se muestra una página de error genérica con código HTTP 403. Puedes personalizar este comportamiento definiendo un closure de “render” para la excepción InvalidSignatureException en bootstrap/app.php.

URLs de acciones de controlador

La función action genera la URL de una acción de controlador determinada.
Si el método del controlador recibe parámetros de ruta, pasa un array asociativo como segundo argumento.

Objeto URI fluido

La clase URI de Laravel proporciona una interfaz fluida para crear y manipular URIs mediante objetos.
Una vez obtenida la instancia, puedes modificarla de forma fluida.

Parámetros de URL por defecto

A veces querrás fijar un valor por defecto para ciertos parámetros de URL en toda la solicitud. Por ejemplo, imagina que muchas rutas tienen un parámetro {locale}.
Pasar locale cada vez que se llama a route resulta pesado. Con URL::defaults puedes definir un valor por defecto de este parámetro que se aplique durante toda la solicitud actual. Llamando a este método desde un middleware de ruta puedes acceder a la solicitud actual.
Con el valor por defecto de locale establecido, ya no hace falta pasarlo al generar URLs con route.
Establecer valores por defecto puede interferir con el implicit model binding de Laravel. Ordena las prioridades del middleware para que el que establece los defaults se ejecute antes que el SubstituteBindings de Laravel. Puedes configurar la prioridad del middleware con el método priority en bootstrap/app.php.
Última modificación el 20 de julio de 2026