Если вы ни разу не правили файл RouteServiceProvider, добро пожаловать под кат.
Если вы работаете с небольшим проектом и у вас всего пару маршрутов, то никаких проблем не возникнет. Но когда количество маршрутов слишком велико, работать в одном файле становится сложно, особенно когда у вас есть страницы для разных пользователей, администраторы, и т.д.
Изначально laravel создает 4 файла:
- api.php
- console.php
- channels.php
- web.php
Предположим, вы планируете создать проект с десятком страниц для каждого типа пользователя:
- Администратор [ настройки сайта, статистика и т.д. ]
- Пользователь [ регистрация, вход, управление профилем и т.д. ]
- Гости [ блог, контакты и т.д. ]
Создаем две директории внутри routes:
- web — здесь описаны все маршруты, связанные с веб-интерфейсом.
- api — здесь все маршруты, связанные с API

Перемещаем api.php из routes в директорию routes/api и web.php в routes/web, а остальные console.php и channels.php оставляем в routes.
Создаем файл admin.php внутри routes/web. Этот файл будет содержать все наши веб-маршруты, связанные с администратором, а затем создайте там user.php, для маршрутов связанных с пользователем.

app/Providers/RouteServiceProvider.php — этот файл отвечает за загрузку всех маршрутов нашего приложения. Метод map() вызывает методы mapApiRoutes() и mapWebRoutes() для загрузки файлов web.php и api.php, которые мы уже переместили, поэтому давайте исправим пути к файлам маршрутов.
protected function mapWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web/web.php')); }
protected function mapApiRoutes() { Route::prefix('api') ->middleware('api') ->namespace($this->namespace) ->group(base_path('routes/api/api.php')); }
Теперь создайте новые методы для routes/web/admin.php и routes/web/user.php внутри RouteServiceProvider.php
protected function mapAdminWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('admin') ->group(base_path('routes/web/admin.php')); }
protected function mapUserWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('user') ->group(base_path('routes/web/user.php')); }
Обратите внимание, что в данном коде возможно добавлять для путей namespace, middleware, prefix и т.д.
Далее просто вызываем их из map():
public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); $this->mapAdminWebRoutes(); $this->mapUserWebRoutes(); }
Последний шаг:
Откройте routes/web/user.php и добавьте тестовый маршрут:
Route::get('/test', function () { return response('Тестовый маршрут', 200); });
Перейти по адресу site.local/user/test, вы должны увидеть текст «Тестовый маршрут».

