具有单个Laravel安装的多个域

问题描述 投票:1回答:1

合并一些旧的,未解决的问题,以及与我自己的问题保持一致的问题。

路线文件:

echo url()->current() ."<br>";

echo request()->getHost();

Route::domain('pro.local')->group(function () {
  Route::get('/', function () {
    dd('HELLO');
  });
});

Route::group(['domain' => 'pro.local'], function() {
    dd('PRO');
});

Route::group(['domain' => 'media.local'], function() {
    dd('MEDIA');
});

Route::group(['domain' => 'software.local'], function() {
    dd('SOFTWARE');
});

Route::get('/', function () {
    return view('welcome');
});

欲望和环境:三个域pro.local,media.local和software.local都使用MAMP PRO 5.2和Laravel 5.7指向相同的public文件夹。到目前为止,这是我对该项目所做的一切。

假设:使用Route::domainRoute::group应该导致返回dd()文本或welcome模板。

到目前为止:我知道我正在使用的mono-repo设置是有效的,因为我已经让这三个站点运行了mono-repo大约3年,并且可以共享服务,而不是跨项目。有了这个说,必须SSH到三个单独的文件夹来运行composer updatenpm update是很烦人的;特别是当每个项目的composer.jsonpackage.json文件基本相同时...我目前使用gulp来移动和复制文件以保持同步。

问题:无论域名如何,只有PRO得到回应。

enter image description here enter image description here enter image description here

它似乎跳过Route::domain并定居在第一个Route::group,正如通过将dd('MEDIA')呼叫移至顶部所证明的那样。

enter image description here

php laravel mamp laravel-5.7 mamp-pro
1个回答
0
投票

Route::group中的代码总是运行,因为Laravel编译各种路由定义供以后使用。因此,当Laravel构建路由列表时,您的dd()将被执行,无论您使用的是哪个域,都会使整个过程短路。

如果你将每个调试dd调用放在每个路由组中的Route::get('/', function () {})内(就像你第一次使用Route::domain('pro.local')位一样),你就会得到你期望的结果。

Route::group(['domain' => 'pro.local'], function() {
    Route::get('/', function () {
        dd('PRO');
    });
});

Route::group(['domain' => 'media.local'], function() {
    Route::get('/', function () {
        dd('MEDIA');
    });
});

Route::group(['domain' => 'software.local'], function() {
    Route::get('/', function () {
        dd('SOFTWARE');
    });
});

Route::get('/', function () {
    return view('welcome');
});

替代方案:将它们全部切换为使用Route::domain也最终在另一个论坛上发现。

© www.soinside.com 2019 - 2024. All rights reserved.