当我打开时,test.example.com/main我预计会出现404错误,因为此路由未在子域路由中定义。但是主域路由适用于子域。因此,路由Route::get('/main' ...运行并且看起来有效,但它一定无效。
我的routes/web.php:
Route::domain('test.example.com') -> group(function () {
Route::get('/sub', function(){
return view('sub.index');
});
});
Route::get('/main', function(){
return view('main.index');
})
Run Code Online (Sandbox Code Playgroud)
我对laravel没有太多经验,但是我认为问题是,main当/sub路由位于子域组内时,路由已开始设置为匹配所有域,所以我想您有2个选择
1-将每个域路由组合在一起:
<?php
Route::domain('test.example.org') -> group(function () {
Route::get('/sub', function(){
return view('sub.index');
});
});
Route::domain('www.example.org') -> group(function () {
Route::get('/main', function(){
return view('main.index');
});
});
Run Code Online (Sandbox Code Playgroud)
2-创建一个中间件domain来检查主机,如果主机不匹配,则返回404页面(我想第一个选择会更好)
<?php
Route::get('/main', function(){
return view('main.index');
})->middleware('domain');
Run Code Online (Sandbox Code Playgroud)