【问题标题】:How to create same route name for differents subdomains in Laravel?如何在 Laravel 中为不同的子域创建相同的路由名称?
【发布时间】:2020-02-18 11:11:42
【问题描述】:

我实际上在 Laravel 5.8 上使用 nwidart/laravel-modules,但我遇到了一些路由问题。

我创建了一些模块(module_1、module_2、module_3)。

每个模块都有文件web.php,在这些文件中,我添加了以下几行:

module_1 web.php

Route::domain('module1.domain.com')->group(function(){
    Route::get('/', 'ModuleOneController@index')->name('home');
});

module_2 web.php

Route::domain('module2.domain.com')->group(function(){
    Route::get('/', 'ModuleTwoController@index')->name('home');
});

module_3 web.php

Route::domain('module3.domain.com')->group(function(){
    Route::get('/', 'ModuleThreeController@index')->name('home');
});

在我的主要 web.php 中的 laravel 项目中:

Route::domain('domain.com')->group(function(){
    Route::get('/', 'HomeController@index')->name('home');
});

我可以访问这些 url 并且在每个子域上调用每个控制器,但是当我想调用函数 route('home') 时,如果我在不同域中指定每个路由名称,它总是返回 https://module3.domain.com 事件。

我想得到:

route('home') => 'https://module1.domain.com' 当我在 module1.domain.com 中调用它时

route('home') => 'https://module2.domain.com' 当我在module2.domain.com 中调用它时 等等……

有没有办法在不同的域中调用相同的路由名称并获取 不同的结果?

提前致谢

【问题讨论】:

    标签: php laravel-5 routes


    【解决方案1】:
    Route::group(['domain' => 'module.domain.com'], function (){
        Route::post('login', [
            'as' => 'login',
            'uses' => 'AuthController@login'
        ]);
        // ... all route
    });
    
    Route::group(['domain' => 'module1.domain.com'], function (){        
        // ... all route
    });
    

    【讨论】:

      【解决方案2】:

      我从未使用过“nwidart/laravel-modules”包。但是,通常 laravel 使用您的 .env 文件中可用的 APP_URL 变量来实际匹配路由中的域。也许它在您的 .env 文件中被定义为“https://module3.domain.com”,这就是它只匹配该路由的原因。

      也许有一种方法可以使用“nwidart/laravel-modules”包定义多个 APP_URL?

      这不是一个解决方案,但它可能会引导您朝着正确的方向前进。否则,必须有人研究包的详细信息才能真正理解问题。

      【讨论】:

      • 我所有的子域都有相同的.env 文件,我找到了条件为if(Request::server("SERVER_NAME") == "module1.domain.com"){ my_routes_heres.... } 的临时解决方案
      • 某种解决方法是的,尝试为不同的子域使用不同的 APP_URL,这可能有效吗?
      猜你喜欢
      • 2021-05-29
      • 1970-01-01
      • 2015-02-03
      • 2020-10-06
      • 2016-02-20
      • 1970-01-01
      • 2018-10-20
      • 2013-10-09
      • 2019-07-20
      相关资源
      最近更新 更多