#laravel
#laravel
Вопрос:
У меня есть настройка, в которой я разрешаю пользователям выбирать поддомен или добавлять свои собственные доменные имена. Проблема в том, что некоторые из моих маршрутов «конфликтуют». Одним из них является /
маршрут.
Сначала я добавил группу доменов вокруг всех базовых маршрутов, которые отфильтровывали только мое доменное имя. Вот эта версия:
// Base routes
Route::domain(config('app.domain')->group(function () {
Route::get('/', 'HomeController')->name('home');
});
// Profile routes
Route::domain('{profileUrl}')->group(function () {
Route::get('/', 'UserController@show')->name('users.show');
});
Но тогда базовые маршруты не совпадают www.domain.com
. Что заставило меня подумать, что я должен каким-то образом использовать регулярное выражение для исключения домена www
из маршрутов профиля. Это означает, что базовые маршруты будут действовать как запасной вариант. Итак, я изменил свои маршруты на это:
// Profile routes
Route::domain('{profileUrl}')->group(function () {
Route::get('/', 'UserController@show')->name('users.show');
});
// Base routes
Route::get('/', 'HomeController')->name('home');
И попытался исключить маршруты, зарегистрировав шаблон, подобный этому:
Route::pattern('profileUrl', '^(?!(domain.com|www.domain.com)$).*');
Но поскольку маршрутизатор Laravel использует Str::is()
для сопоставления шаблоны, регулярное выражение не работает.
Я знаю, что мог бы решить эту проблему с помощью nginx, но для этого потребуется еще больше настроить все серверы prod staging dev. Я бы предпочел, чтобы это было в моей кодовой базе.
Как мне сопоставить все запросы, кроме основного домена и поддомена www, в группе маршрутизаторов Laravel?