Laravel 如果路由不在子域中,子域路由重定向到 404
Laravel subdomain routing redirect to 404 if route not in subdomain
我在我的应用程序中使用子域路由,如果请求的路由在子域中不存在,我希望将对子域路由的请求重定向到 404 页面。这是场景:
// Subdomain routes
Route::domain('app.mysite.test')->group(function(){
Route::get('/', function(){
dd("Home page for subdomain");
});
Route::get('/404', function(){
dd("Subdomain 404");
});
//... other subdomain routes here
});
// Top domain routes
Route::group(['namespace' => 'Site'], function(){
Route::get('/', function(){
dd("Main site home page");
});
Route::get('/login', function(){
dd("Main site LOGIN page");
});
});
在上述场景中,如果有人试图访问子域中不存在的路由(例如http://app.mysite.test/login
),他们将被自动重定向到主站点的登录页面(即:http://mysite.test/login
).
我的问题是:如果用户尝试访问 http://app.mysite.test/login
,我如何将他们重定向到 http://app.mysite.test/404
?
我想我找到了一个解决方案:在 Subddomain 路由组的末尾,添加一个 catchall
表达式,基本上捕获所有不在子域路由中的内容并呈现 404 页面。确保此 catchall
路由位于子域路由的末尾:
// Subdomain routes
Route::domain('app.mysite.test')->group(function(){
Route::get('/', function(){
dd("Home page for subdomain");
});
//Route::get('/404', function(){
// dd("Subdomain 404");
//});
//... other subdomain routes here
// ADD THE CATCHALL REGEX HERE
Route::get("{catchall}", function(){
dd("404 page from subdomain");
})->where('catchall', '(.*)');
});
// Top domain routes
Route::group(['namespace' => 'Site'], function(){
Route::get('/', function(){
dd("Main site home page");
});
Route::get('/login', function(){
dd("Main site LOGIN page");
});
});
我在我的应用程序中使用子域路由,如果请求的路由在子域中不存在,我希望将对子域路由的请求重定向到 404 页面。这是场景:
// Subdomain routes
Route::domain('app.mysite.test')->group(function(){
Route::get('/', function(){
dd("Home page for subdomain");
});
Route::get('/404', function(){
dd("Subdomain 404");
});
//... other subdomain routes here
});
// Top domain routes
Route::group(['namespace' => 'Site'], function(){
Route::get('/', function(){
dd("Main site home page");
});
Route::get('/login', function(){
dd("Main site LOGIN page");
});
});
在上述场景中,如果有人试图访问子域中不存在的路由(例如http://app.mysite.test/login
),他们将被自动重定向到主站点的登录页面(即:http://mysite.test/login
).
我的问题是:如果用户尝试访问 http://app.mysite.test/login
,我如何将他们重定向到 http://app.mysite.test/404
?
我想我找到了一个解决方案:在 Subddomain 路由组的末尾,添加一个 catchall
表达式,基本上捕获所有不在子域路由中的内容并呈现 404 页面。确保此 catchall
路由位于子域路由的末尾:
// Subdomain routes
Route::domain('app.mysite.test')->group(function(){
Route::get('/', function(){
dd("Home page for subdomain");
});
//Route::get('/404', function(){
// dd("Subdomain 404");
//});
//... other subdomain routes here
// ADD THE CATCHALL REGEX HERE
Route::get("{catchall}", function(){
dd("404 page from subdomain");
})->where('catchall', '(.*)');
});
// Top domain routes
Route::group(['namespace' => 'Site'], function(){
Route::get('/', function(){
dd("Main site home page");
});
Route::get('/login', function(){
dd("Main site LOGIN page");
});
});