从子域路由重定向到根路由

时间:2018-05-11 22:42:50

标签: php laravel

我有2套路线,域名保存在HOST的env文件中,第一组可以由example.com加入,第二组应该使用somesubdomain.example.com,这项工作,问题是当我无法从subdomains route重定向到root routes时,subdomain仍然存在以致root route赢了,我试过了使用named routes但它会重定向到xampp信息中心的localhost/dashboard

//root routes
Route::namespace('Main')->domain(env('HOST'))->group(function(){
    Route::get('/','Home\HomeController@getMain')->name('inicio');//i have tried to name the route but this just redirect to localhost/dashboard
});
//subdomain routes
Route::namespace('Stores')->domain('{subdomain}.'.env('HOST'))->group(function(){
    Route::get('/',function(){
        return redirect()->route('inicio');
    });
});

这两条路线都有效,如果不是redirect我做return 'foo';它会在有子域时显示foo,并在它没有时返回一个视图。

如何删除子域并重定向到路由?

1 个答案:

答案 0 :(得分:1)

我认为解决方案可能是重定向到没有任何参数且没有绝对URL的命名路由,例如:

//root routes
Route::namespace('Main')->domain(env('HOST'))->group(function(){
    Route::get('/','Home\HomeController@getMain')->name('inicio');
});
//subdomain routes
Route::namespace('Stores')->domain('{subdomain}.'.env('HOST'))->group(function(){
    Route::get('/',function(){
        return redirect()->to(route('inicio', [], false);
    });
});

唯一的变化是重定向应该看起来像:

return redirect()->to(route('inicio', [], false);

第一个参数是命名路由,第二个参数包括任何参数(在本例中为none),第三个参数指定URL是否应该是绝对的。

我手边没有环境来测试这个,但希望这是一个适合你的解决方案。