Группы роутов
Группа применяет общие настройки к нескольким роутам. Это избавляет от дублирования: префикс, middleware, имя, домен задаются один раз.
Префикс
Route::prefix('admin')->group(function () {
Route::get('/users', fn () => 'Users');
Route::get('/posts', fn () => 'Posts');
});
Оба роута получат URL /admin/users и /admin/posts.
Middleware
Route::middleware(['auth', 'verified'])->group(function () {
Route::get('/dashboard', fn () => 'Dashboard');
Route::get('/profile', fn () => 'Profile');
});
Все роуты в группе требуют аутентификации и подтверждённого email.
Комбинация
Route::middleware('auth')
->prefix('admin')
->name('admin.')
->group(function () {
Route::get('/users', fn () => 'Users')->name('users');
Route::get('/posts', fn () => 'Posts')->name('posts');
});
Домен и поддомен
Route::domain('admin.example.com')->group(function () {
Route::get('/users', fn () => 'Users');
});
Динамический поддомен:
Route::domain('{account}.example.com')->group(function () {
Route::get('/dashboard', function ($account) {
return "Account: {$account}";
});
});
Вложенные группы
Route::prefix('api')->group(function () {
Route::prefix('v1')->group(function () {
Route::get('/users', fn () => 'API v1 Users');
});
});
Файлы роутов
Если роутов много — их выносят в отдельные файлы. Регистрация в bootstrap/app.php:
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
then: function () {
Route::middleware('web')
->prefix('admin')
->group(base_path('routes/admin.php'));
},
)
Просмотр
php artisan route:list --path=admin
php artisan route:list --middleware=auth