使用Laravel 4从URL中删除子域

时间:2014-12-19 16:08:51

标签: php laravel

我使用laravel 4.2应用程序的子域路由。这是我的路线文件:

Route::group(array('domain' => '{keyword}.example.com'), function() {
    Route::get('/', 'FrontendHomeController@index');
});

Route::get('/', ['uses' => 'FrontendHomeController@index', 'as' => 'home']);
Route::get('hotels', ['uses' => 'FrontendHotelController@index', 'as' => 'hotelsearch']);
Route::get('hotel/{slug}/{id}', ['uses' => 'FrontendHotelController@detail', 'as' => 'hoteldetail']);
[...]

所以我有几个页面使用子域名,如keyword.example.comanother.example.com。但大多数其他网页都是常规的example.com/page网址。这到目前为止工作正常。我使用Laravel网址/路线助手生成导航链接,例如{{ url('hotels') }}{{ route('hotelsearch') }}

现在,在子域名页面上,生成的URL包含子域名。例如。在keyword.example.com上,{{ url('hotels') }}生成keyword.example.com/hotels而非example.com/hotels

我想删除使用url()route()帮助程序生成的所有链接的子域名,这些帮助程序应始终指向根域。

是否有参数或是否必须以某种方式覆盖辅助方法?

1 个答案:

答案 0 :(得分:0)

模板中的url函数包含Illuminate\Routing\UrlGenerator::to,它不允许您指定域,但您可以使用相同的Route::group technique来封装所有主域路由。 (它不需要通配符,如文档中所示。)

Route::group(array('domain' => 'www.example.com'), function() {
    Route::get('hotels', ['uses' => 'FrontendHotelController@index', 'as' => 'hotelsearch']);
    // ...
});