是否可以在 Laravel 中将多个域分组到一个路由组中?

2022-08-30 12:48:58

假设我有以下内容:

Route::group(array('domain' => array('admin.example.com')), function()
{
    ...
});

Route::group(array('domain' => array('app.example.com')), function()
{
    ...
});

Route::group(array('domain' => array('dev.app.example.com')), function()
{
    ...
});

有没有办法让多个域共享一个路由组?像这样:

Route::group(array('domain' => array('dev.app.example.com','app.example.com')), function()
{
    ...
});

答案 1

Laravel似乎并不支持这一点。

我不确定为什么我没有早点想到这一点,但我想一个解决方案是在单独的函数中声明路由,将其传递给两个路由组。

Route::group(array('domain' => 'admin.example.com'), function()
{
    ...
});

$appRoutes = function() {
    Route::get('/',function(){
        ...
    }); 
};

Route::group(array('domain' => 'app.example.com'), $appRoutes);
Route::group(array('domain' => 'dev.app.example.com'), $appRoutes);

我不确定此解决方案是否有任何重大的性能影响。


答案 2

拉拉维尔 5.1

 

Route::pattern('subdomain', '(dev.app|app)');
Route::group(['domain' => '{subdomain}.example.com'], function () {
  ...
});

 

Route::pattern('subdomain', '(dev.app|app)');
Route::pattern('domain', '(example.com|example.dev)');
Route::group(['domain' => '{subdomain}.{domain}'], function () {
  ...
});


推荐