laravel 主域路由优先于动态子域

Posted

技术标签:

【中文标题】laravel 主域路由优先于动态子域【英文标题】:laravel main domain route is taking precedence over dynamic subdomain 【发布时间】:2019-12-23 15:48:53 【问题描述】:

我正在开发一个 Laravel 项目,并构建了一个功能来创建动态子域,这真的很好。这是路线的代码。

Route::group(['domain' => 'subdomain.domain.ext'], function($subdomain)
 
    Route::get('/', 'UserController@userPage')->name('userPage');
    Route::post('/', 'UserController@userPageSave')->name('userPageSave');

);

子域工作正常,但只要我尝试访问主域,它就会优先于子域

Route::get('/', function() 
    return view('general.homepage');
);

所以我把这个主路由代码然后我不能再访问子域了。子域现在基本上显示主域中的任何内容.. 令人沮丧。

【问题讨论】:

写下两种情况下访问的url(主域和子域) 【参考方案1】:

来自 laravel 文档 https://laravel.com/docs/5.8/routing#route-group-sub-domain-routing

为了确保您的子域路由可达,您应该在注册根域路由之前先注册子域路由。这将防止根域路由覆盖具有相同 URI 路径的子域路由。

【讨论】:

【参考方案2】:

来自 laravel 8。 https://laravel.com/docs/7.x/routing#route-group-subdomain-routing

为了确保您的子域路由可达,您应该在注册根域路由之前注册子域路由。这将防止根域路由覆盖具有相同 URI 路径的子域路由。

如果您不理解上述引用的含义,因为这基本上是这种情况下的问题,这意味着您将子域路由放置(注册)在任何根域路由的正上方。

你应该做什么:

//Rooot Domain route(s)
    Route::get('/', function () 
    return view('welcome'); 
);

//Sub Domain route(s)

Route::domain('admin.site')->group(function () 
      Route::get('/', function () 
        return "I will only trigger when domain is admin.site.";
    );
);

你应该做什么


//Sub Domain route(s)

Route::domain('admin.site')->group(function () 
      Route::get('/', function () 
        return "I will only trigger when domain is admin.site.";
    );
);

//Root Domain route(s)
    Route::get('/', function () 
    return view('welcome'); 
);

【讨论】:

以上是关于laravel 主域路由优先于动态子域的主要内容,如果未能解决你的问题,请参考以下文章

Cors Ajax 请求适用于子域但不适用于主域

子域路由在 Laravel 5 上不起作用 - WAMPServer

CNAME 记录中的 * 是不是优先于显式子域?

laravel 包中路由声明的顺序

Laravel 带接口的动态路由

Bootstrap 样式优先于自定义 CSS