Acortadores de URL en Laravel con el paquete Short URL

- Andrés Cruz

EN In english

Acortadores de URL en Laravel con el paquete Short URL

Los acortadores de URL en Laravel son una solución muy práctica cuando necesitas compartir enlaces largos, controlar accesos o simplemente no sobrecargar visualmente una interfaz, un email o una publicación. En mi caso, tener la posibilidad de generar URLs cortas directamente desde mi propia aplicación Laravel siempre me ha dado una ventaja enorme frente a depender de servicios externos.

En este artículo te explico cómo crear un acortador de URL en Laravel usando el paquete Short URL de Ash Allen, desde la instalación hasta sus funcionalidades más avanzadas, con ejemplos reales y casos de uso habituales en proyectos de producción.

Qué es un acortador de URL en Laravel y cuándo usarlo

Qué es Short URL y por qué usar un paquete en lugar de hacerlo desde cero

Short URL (ashallendesign/short-url) es un paquete open source para Laravel que te permite generar URLs cortas de forma rápida y controlada. En lugar de reinventar la rueda creando tablas, controladores y lógica de redirección manualmente, este paquete te ofrece una solución sólida, mantenida y bien integrada con el ecosistema Laravel.

Cubre prácticamente todos los casos reales que suelen aparecer en una aplicación: 

  • tracking
  • control de accesos
  • fechas de activación
  • URLs de un solo uso
  • todo sin complicaciones

Casos reales donde un acortador en Laravel marca la diferencia

Algunos escenarios donde tiene mucho sentido usar un acortador de URLs dentro de Laravel:

  • Enlaces temporales para campañas de marketing
  • URLs más limpias para emails o notificaciones
  • Accesos únicos para descargas o invitaciones
  • Tracking básico sin depender de herramientas externas
  • Mayor control y privacidad sobre los datos

Instalación del paquete Short URL en Laravel

Requisitos mínimos

Antes de instalar el paquete, asegúrate de cumplir estos requisitos:

  • Laravel 8.0 o superior
  • PHP 8.0 o superior

Instalación con Composer

La instalación es directa usando Composer:

$ composer require ashallendesign/short-url

Publicación de configuración y migraciones

Después de instalarlo, publica el archivo de configuración y las migraciones:

$ php artisan vendor:publish --provider="AshAllenDesign\ShortURL\Providers\ShortURLProvider"

El paquete añade dos tablas nuevas a la base de datos:

  • short_urls
  • short_url_visits

Ejecuta las migraciones:

$ php artisan migrate

Con esto, el acortador de URL ya está listo para usarse.

Cómo crear URLs cortas en Laravel con Short URL

Crear una URL corta básica

La forma más rápida de generar una URL corta es indicar la URL de destino y llamar al método make():

use AshAllenDesign\ShortURL\Facades\ShortURL;

$shortURLObject = ShortURL::destinationUrl('https://destination.com')->make();
$shortURL = $shortURLObject->default_short_url;

Depende de ti configurar y crear URL cortas en torno a sus datos existentes; por ejemplo, podría generar una URL corta cuando se publique un nuevo modelo de publicación.

Esto crea automáticamente un registro en la base de datos y devuelve la URL corta generada.

Obtener y usar la URL generada en tu aplicación

La propiedad default_short_url es la que normalmente usarás para mostrar o compartir el enlace. Este enfoque encaja muy bien cuando generas URLs cortas al crear un modelo, como una publicación o una campaña.

  1. Claves de URL personalizadas
  2. URL cortas de un solo uso
  3. Hacer cumplir HTTPS
  4. Configurar el código de estado de redireccionamiento (302 encontrado en lugar de 301 permanente)
  5. Hacer que una URL corta esté activa e inactiva en una fecha determinada
  6. Seguimiento de visitantes:
    1. Dirección IP
    2. Nombre del navegador
    3. Versión del navegador
    4. Nombre del sistema operativo
    5. Versión del sistema operativo
    6. URL de referencia (la URL de la que proviene originalmente el visitante)
    7. Tipo de dispositivo (puede ser: escritorio / móvil / tableta / robot)
      A continuación, se muestran más ejemplos de cómo trabajar con instancias de modelo ShortURL existentes de README:
use \AshAllenDesign\ShortURL\Models\ShortURL;

// Find URL by key
$shortURL = ShortURL::findByKey('abc123');

// Find by destination
$shortURLs = ShortURL::findByDestinationURL('https://destination.com');

// Enable tracking to an existing short URL instance
$shortURL->trackingEnabled();

// Get model properties, such as visits
$shortURL = ShortURL::find(1);
$visits = $shortURL->visits;

// Single-use short URL
$builder = new \AshAllenDesign\ShortURL\Classes\Builder();

$shortURLObject = $builder
   ->destinationUrl('https://destination.com')
   ->singleUse()
   ->make();

Uso de claves personalizadas en URLs cortas

Qué es una urlKey y para qué sirve

Por defecto, Short URL genera una clave aleatoria al final del enlace, algo como:

https://webapp.com/short/abc123

Pero muchas veces interesa usar claves más descriptivas, sobre todo en campañas o enlaces públicos.

Ejemplo con claves personalizadas

Puedes definir una clave personalizada usando urlKey():

use AshAllenDesign\ShortURL\Facades\ShortURL;
$shortUrl = ShortURL::destinationUrl('https://destination.com')
   ->urlKey('custom-key')
   ->make()
   ->default_short_url;
// Resultado: https://webapp.com/short/custom-key

Este pequeño detalle mejora mucho la legibilidad y la confianza del usuario.

Seguimiento de visitas en URLs cortas

Qué datos se pueden rastrear

Una de las grandes ventajas del paquete es el tracking integrado. Por defecto, puede registrar:

  • Dirección IP
  • Navegador y versión
  • Sistema operativo y versión
  • URL de referencia
  • Tipo de dispositivo (desktop, mobile, tablet, robot)

Cuando he necesitado estadísticas rápidas sin montar Google Analytics, esta funcionalidad me ha resultado más que suficiente.

Activar o desactivar el tracking de visitas

El tracking está habilitado por defecto, pero puedes forzarlo al crear la URL:

$shortURLObject = ShortURL::destinationUrl('https://destination.com')
   ->trackVisits()
   ->make();

O desactivarlo explícitamente:

$shortURLObject = ShortURL::destinationUrl('https://destination.com')
   ->trackVisits(false)
   ->make();

Habilitar o excluir campos de seguimiento específicos

También puedes decidir exactamente qué datos se guardan:

ShortURL::destinationUrl('https://destination.com')
   ->trackVisits()
   ->trackIPAddress()
   ->trackBrowser()
   ->trackBrowserVersion()
   ->trackOperatingSystem()
   ->trackOperatingSystemVersion()
   ->trackDeviceType()
   ->trackRefererURL()
   ->make();

O excluir alguno en concreto, por ejemplo la IP:

ShortURL::destinationUrl('https://destination.com')
   ->trackVisits()
   ->trackIPAddress(false)
   ->make();

URLs cortas de un solo uso y control de accesos

Cuándo tiene sentido usar URLs de un solo uso

Las URLs de un solo uso son muy útiles para:

  • Invitaciones privadas
  • Descargas únicas
  • Accesos sensibles

Una vez visitadas, devuelven un 404 automáticamente.

Crear URLs cortas que solo se puedan visitar una vez:

ShortURL::destinationUrl('https://destination.com')
   ->singleUse()
   ->make();

Activación y desactivación de URLs por fechas

Ejemplo con fechas de activación y expiración

Activar una URL mañana:

ShortURL::activateAt(now()->addDay())->make();

Activarla mañana y desactivarla pasado mañana:

ShortURL::activateAt(now()->addDay())
   ->deactivateAt(now()->addDays(2))
   ->make();

Si alguien intenta acceder fuera de ese rango, recibirá un 404.

Personalización de rutas y prefijo de las URLs cortas

Ruta por defecto /short/{key}

El paquete incluye una ruta lista para usar:

/short/{shortURLKey}

Cómo cambiar el prefijo de las URLs cortas

Si quieres cambiar /short por algo más corto como /s, puedes hacerlo desde el archivo de configuración short-url.php, modificando el campo prefix.

Trabajando con el modelo ShortURL y estadísticas

Buscar URLs por clave o destino

El modelo ShortURL extiende Eloquent, así que puedes trabajar con él fácilmente:

use AshAllenDesign\ShortURL\Models\ShortURL;
$shortURL = ShortURL::findByKey('abc123');
$shortURLs = ShortURL::findByDestinationURL('https://destination.com');

Acceder a visitas y métricas desde Eloquent

$shortURL = ShortURL::find(1);
$visits = $shortURL->visits;

Esta parte es especialmente útil si quieres construir tus propios informes o dashboards internos.

Ventajas frente a servicios externos

  • Control total de los datos
  • Sin dependencias externas
  • Integración directa con tu lógica de negocio
  • Más privacidad para tus usuarios

Rendimiento, control y privacidad

Tener el acortador dentro de Laravel te permite optimizar rendimiento y adaptar el comportamiento exactamente a tus necesidades, algo que no siempre es posible con servicios externos.

Preguntas frecuentes sobre acortadores de URL en Laravel

  • ¿Short URL es gratis?
    • Sí, es un paquete open source.
  • ¿Se pueden crear URLs temporales en Laravel?
    • Sí, usando fechas de activación y desactivación.
  • ¿Dónde se guardan las visitas?
    • En la tabla short_url_visits.
  • ¿Se puede cambiar la ruta por defecto?
    • Sí, desde el archivo de configuración.

Conclusión

Implementar acortadores de URL en Laravel con el paquete Short URL es una solución potente, flexible y fácil de mantener. En mi experiencia, cubre prácticamente todos los escenarios reales sin añadir complejidad innecesaria al proyecto. Si necesitas URLs cortas controladas, con tracking y totalmente integradas en Laravel, este paquete es una apuesta segura.

Aprende a crear un acortador de URL en Laravel usando el paquete Short URL. Guía completa sobre instalación, tracking de visitas, claves personalizadas y enlaces de un solo uso.

Acepto recibir anuncios de interes sobre este Blog.

Andrés Cruz

EN In english