Laravel 5.1针对特定域和所有子域的路由

时间:2017-07-04 09:00:23

标签: php laravel laravel-5

所以我有一个项目有多个域指向它。现在我想按域和子域分组路由。

例如,我想为example.com和example.com的每个子域

分别设置路由

我现在这样做:

$RoutesOnlyForExamp = function() {
  Route::get('/', ['as' => 'home', 'uses' => 'TestController@home']);
};

Route::group(['domain' => 'sub1.example.com'], $RoutesOnlyForExamp);
Route::group(['domain' => 'sub2.example.com'], $RoutesOnlyForExamp);
Route::group(['domain' => 'example.com'], $RoutesOnlyForExamp);

home()方法会给我这个:

return view('home')

现在我遇到了一个问题。我在视图中有一些链接,这些链接都会导致

return view('RANDOM_VIEW');

就像home()方法一样。

视图中的链接生成如下:

<a href="{{route('ROUTENAME')}}">LINKNAME</a>

现在让我们说我通过sub1.example.com访问该网站。现在我的一些链接看起来是正确的,如下所示:

<a href="sub1.example.com/slug">Random Link 1</a>

但有些看起来像这样,这是错误的,因为我在sub1.example.com而不是example.com:

<a href="example.com/slug">Random Link 1</a>

我没有看到任何模式何时以及为什么它会占用错误的域名。我的目标是,如果我通过sub1.example.com访问该网站,所有链接都应该使用此而不仅仅是example.com。

我希望问题很清楚。否则我可以更详细地试一试。

我感谢您的帮助,并提前感谢您!

1 个答案:

答案 0 :(得分:1)

您可以接受子域名,如

Route::group(['domain' => '{subdomain}.example.com'], $RoutesOnlyForExamp);

并将其作为变量和路径参数提供。

如果要生成指向子域路线的链接,可以执行route('ROUTENAME', [$subdomain])

如果按以下方式声明,您的主要网站路线将按预期工作:

Route::group(['domain' => 'example.com'], $RoutesOnlyForExamp);