Manejo de dominios/subdominios y agrupar rutas en funciones en Laravel
Índice de contenido
En este apartado quiero mostrarte dos cosas interesantes para manejar tu aplicación en Laravel y no solo el sistema de Autorización en Laravel con Gates y Policies que presentamos antes y que es ideal para dar accesos mediante subdominios dependiendo del perfil:
- Cómo trabajar con subdominios o dominios.
- Cómo agrupar rutas para mantener un esquema limpio y reutilizable.
Esto lo veremos tomando como ejemplo el proyecto de Academia que tengo en Desarrollo Libre, donde cuento con tres módulos principales:
- El de Academia que, que es la web de cursos y libros
- También tengo el de dashboard
- Y también tengo lo que es el blog
Para esto yo bueno para el de Academia como puedes ver es un subdominio y también el dashboard lo manejo con un subdominio:
if (config('app')['app_route'] == 'production') {
Route::domain('academy.desarrollolibre.net')->group(function () {
Route::get('/{n1?}/{n2?}/{n3?}/{n4?}', [AcademyController::class, 'index'])->name('course-vue');
});
Route::get('/academia', function () {
return redirect('https://academy.desarrollolibre.net/');
});
} else {
Route::get('academia/{n1?}/{n2?}/{n3?}/{n4?}/{n5?}/{n6?}', [AcademyController::class, 'index'])->name('course-vue');
}Laravel nos permite usar el tipo de ruta domain, donde podemos especificar un dominio o subdominio. En este caso, academy.desarrollolibre.net es el subdominio que apuntamos a la carpeta public de Laravel.
Dominios y subdominios
En local, para no complicarme creando subdominios, manejo el mismo proyecto con rutas normales y condicionales según el ambiente de desarrollo o producción.
Ejemplos de rutas que funcionan con parámetros opcionales:
https://academy.desarrollolibre.net/libros
https://academy.desarrollolibre.net/libro/visor/laravel/
Esto permite que cualquier ruta ingrese por los parámetros opcionales definidos en la ruta.
Laravel se encarga de manejar las rutas internamente, por lo que no hay mucho más que configurar.
Entonces por aquí vamos a ver cómo es la operación por aquí tenemos es tan sencillo un tipo de ruta llamado domain en el cual nosotros podemos colocar ya sea un dominio o un subdominio que justamente lo que yo estoy colocando por acá tal cual puedes ver simplemente coloco aquí el subdominio y poco más que decir realmente por aquí a la final esto como es la de Vue entonces lo que hago el truquito entre comillas que coloco aquí opcionales para precisamente manejar el el ruteado:
Route::get('academia/{n1?}/{n2?}/{n3?}/{n4?}/{n5?}/{n6?}', [AcademyController::class, 'index'])->name('course-vue');Fíjate también otro punto interesante que recuerda que también la aplicación por más que sea la tengo que desarrollar por tal motivo yo en local me da mucho fastidio estar creando subdominios y demás por lo tanto yo lo manejo de la manera clásica que sería aquí colocar directamente preguntar por el ambiente de si estamos en desarrollo a producción para emplear el esquema de dominios o subdominios o directamente una ruta.
Agrupación de rutas en funciones
Para el dashboard o panel de administración, tiene más sentido agrupar rutas debido a que existen múltiples funcionalidades:
function routesDashboard()
{
Route::get('/', function () {
return redirect()->route("post-list");
});
***
}Al agrupar rutas en funciones, obtenemos varias ventajas:
- Reutilización: podemos usar las mismas rutas en diferentes entornos sin duplicar código.
- Organización: podemos separar rutas por módulo (por ejemplo, web/dashboard, web/blog, web/academia).
- Flexibilidad: en producción podemos usar subdominios y en desarrollo un dominio local sin cambios complejos.
Ejemplo de uso en producción vs desarrollo
- Producción: usamos subdominios para separar los módulos.
- Desarrollo: todo se maneja desde un dominio de pruebas para simplificar el flujo de trabajo.
Esto permite mantener un esquema sencillo en local y aprovechar la estructura de subdominios en producción; para seguir personalizando tu aplicación con accesos específicos dependiendo del rol, permisos…, el siguiente paso es aprender a Manejar Preferencias de Usuario.
Acepto recibir anuncios de interes sobre este Blog.
Hablaremos sobre como puedes agrupar tus rutas en dominios y como puedes agrupar para reutilizar rutas en funciones.