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