Laravel Route Groups

Laravel Route Groups

Route groups let you share attributes — middleware, prefixes, namespaces — across many routes without repeating them.

1 - Middleware Groups

Route::middleware(['auth', 'verified'])->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/settings', [SettingsController::class, 'index']);
});

2 - URI Prefix

Route::prefix('admin')->group(function () {
    Route::get('/users', [Admin\UserController::class, 'index']);   // /admin/users
    Route::get('/reports', [Admin\ReportController::class, 'index']); // /admin/reports
});

3 - Name Prefix

Route::name('admin.')->group(function () {
    Route::get('/users', [Admin\UserController::class, 'index'])->name('users');  // admin.users
    Route::get('/posts', [Admin\PostController::class, 'index'])->name('posts');  // admin.posts
});

4 - Combining Attributes

Route::middleware('auth')
    ->prefix('admin')
    ->name('admin.')
    ->group(function () {
        Route::resource('users', Admin\UserController::class);
        Route::resource('posts', Admin\PostController::class);
    });