Вот один из способов go об этом:
function getSubDomain()
{
$host = parse_url(url()->current())['host'];
$exploded = explode('.', $host);
array_pop($exploded); //remove TLD
array_pop($exploded); //remove domain
return $exploded[0] ?? null; //returns null if no subdomain is passed
}
Создайте промежуточное ПО и примените его к вашей группе маршрутов. В промежуточном программном обеспечении вызовите указанную выше функцию, чтобы получить префикс / поддомен и добавить к объекту запроса, например:
public function handle($request, Closure $next)
{
$subdomain = $this->getSubdomain();
$request->merge(['subdomain' => $subdomain]);
return $next($request);
}
. Таким образом вы можете объявить свой маршрут следующим образом:
Route::group([
'middleware' => 'sub.parse' // need to be declared in app/Http/Kernel.php
], function () {
Route::get('/', function () {
$subdomain = request('subdomain'); // suddomain already available in request object
});
Route::get('/test/me/please', function () {
return 'Bla Bla Bla';
});
});
Поэтому, где бы вам ни понадобился поддомен, вы можете получить его из объекта запроса, например $request->subdomain