在Laravel 5中动态设置基本URL

时间:2017-12-05 14:48:32

标签: php laravel laravel-5 laravel-5.3

我在example.com上运行了两个版本的站点 和其他在example.com/version2。

在web.php我有

    Route::group(['middleware'=>['webconfig'],'prefix'=>'version2'], function(){
        //Routes for version2 site
    });
// Routes for main site

在webconfig中间件中,我为version2站点设置了数据库连接。哪个工作正常但我也在为version2站点设置基本URL。哪个不起作用url()方法返回example.com 这是我的webconfig中间件

public function handle($request, Closure $next)
    {
        \Config::set('database.default', 'mysql_us');
        \Config::set('app.url', url('version2'));
        return $next($request);
    }

那么如何设置动态基本网址。

2 个答案:

答案 0 :(得分:1)

在.env文件中指定APP_URL = http://example.com/version2

答案 1 :(得分:1)

由于您的2个版本部署在同一主机中,因此您只需添加前缀' version2'为您的新版本。为什么不创建一个中间件来检查你的段(1)是否版本2,然后设置它正在使用的正确数据库。我相信当用户在version2段时,您想要重定向到其他数据库,我是对的吗?

在这种情况下,您可以在中间件中使用这样的解决方案,

if(Str::lower($request->segment(1) == "version2"){
    config()->set('database.default', 'mysql_us');
}else{
    //your another config.
}

我希望这可以帮助您解决问题。