Создание маршрута в Laravel с использованием поддоменов и подстановочных знаков домена

С Laravel 5.2 я хотел бы настроить группу поддоменов подстановочных знаков, чтобы я мог зафиксировать параметр. Я попробовал это:

Route::group(['middleware' => ['header', 'web']], function () { Route::group(['domain' => '{alias}.'], function () { Route::get('alias', function($alias){ return 'Alias=' . $alias; }); }); }); 

Я также попробовал ['domain' => '{alias}.*'] .

Я называю этот URL: http://abc.localhost:8000/alias и он возвращает ошибку маршрута, которая не найдена.

Моя локальная среда – localhost:8000 используя команду php artisan serve . Возможно ли установить это локально без фактического имени домена, связанного с ним?

Раньше у меня была аналогичная задача. Если вы хотите поймать любой домен, любой формат – к сожалению, вы не можете сделать это непосредственно в файле маршрутов. Файл маршрутов ожидает, что по крайней мере одна часть URL-адреса будет предварительно определена, статическая.

То, что я закончил делать, – это создание промежуточного программного обеспечения, которое анализирует URL-адрес домена и использует некоторую логику, основанную на этом, например:

 class DomainCheck { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $domain = parse_url($request->url(), PHP_URL_HOST); // Remove www prefix if necessary if (strpos($domain, 'www.') === 0) $domain = substr($domain, 4); // In my case, I had a list of pre-defined, supported domains foreach(Config::get('app.clients') as $client) { if (in_array($domain, $client['domains'])) { // From now on, every controller will be able to access // current domain and its settings via $request object $request->client = $client; return $next($request); } } abort(404); } } 

В строке 2, где у вас есть:

 Route::group(['domain' => '{alias}.'], function() { 

Замените его следующим:

 Route::group(['domain' => '{alias}.localhost'], function() { 

После этого он должен работать.