Laravel主域路由适用于子域

Ali*_*N11 3 php laravel

当我打开时,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)

sai*_*aif 5

我对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)