Несколько доменов с одной установкой Laravel - PullRequest
0 голосов
/ 15 февраля 2019

В некотором роде объединены несколько старых, нерешенных вопросов, которые соответствуют моей собственной проблеме.

Файл маршрутов:

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 все указывают на одну и ту же папку public, используя MAMP PRO 5.2 и Laravel 5.7.Это все, что я сделал с проектом до сих пор.

Гипотеза: Использование Route::domain или Route::group должно привести к возвращению текста dd() или шаблона welcome.

Пока: Я знаю настройку моно-репо, которую я использую, потому что у меня три сайта работают с моно-репо около 3 лет и могут совместно использовать сервисыа что не по проектам.С учетом сказанного, раздражает необходимость использовать SSH в трех отдельных папках для запуска composer update и npm update;особенно когда файлы composer.json и package.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

1 Ответ

0 голосов
/ 15 февраля 2019

Код внутри Route::group всегда запускается, поскольку Laravel компилирует различные определения маршрута для последующего использования.Таким образом, ваш dd() выполняется, когда Laravel строит список маршрутов, замыкая весь процесс независимо от того, в каком домене вы находитесь.

Если вы поместите каждый из отладочных вызовов 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');
});

ALTERNATIVE: переключение их всех на использование Route::domainтакже заканчивал тем, что работал за открытие на другом форуме.

...