一个laravel应用程序可以处理多个域吗?

时间:2020-05-22 09:01:18

标签: laravel routes

让我说我有domain1.com和domain2.com。我希望他们两个都指向同一个laravel应用,但显示不同的页面。例如,domain1.com将引用呈现页面X的控制器X,而domain2.com将引用呈现页面Y的控制器Y。这可能吗?如果是这样,我将如何编码路由?请记住,我不是在谈论子域。

1 个答案:

答案 0 :(得分:0)

您可以制作多个网络路由文件。

然后在RouteServiceProvider.php方法的mapWebRoutes()中,根据主机名在路由文件之间切换。

    protected function mapWebRoutes()
    {
        $request = $this->app->make(Request::class);

        if ($request->getHost() === "example.com") {
            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/example.com.web.php'));
        } else {
            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/othersite.com.web.php'));
        }
    }

如果需要将控制器分成单独的名称空间(以避免混淆它们),则还可以通过指定名称空间在该方法中进行管理。

更新:

有关如何在注释中要求的路由文件中使用if的示例:

//routes/web.php

if (request()->getHost() === "example.com") {
    Route::get('/', 'OneController@index');
} else {
    Route::get('/', 'AnotherController@index');
}