我刚刚开始学习 Laravel 5 并尝试创建多语言网站,并希望为该语言使用不同的域,因此 en.example.app 指向英语版本,es.example.app 指向西类牙语等等。我使用路由组,下面是我的代码。
Route::group(['domain' => '{domain}.example.app'], function() {
Route::get('/', function () {
return view('index');
});
Route::get('test', function(){
return view('index');
});
});
它适用于除 example.app 之外的所有域。不幸的是,可选参数 {domain?} 不适用于子域,我不想像这样复制路由。
Route::get('/', function () {
return view('index');
});
Route::get('test', function(){
return view('index');
});
Route::group(['domain' => '{domain}.example.app'], function() {
Route::get('/', function () {
return view('index');
});
Route::get('test', function(){
return view('index');
});
});
有人可以建议如何避免这种重复吗?
最佳答案
那是因为 {domain}.example.app
在 example.app
之前需要一个 .
。
您可以删除 .
并为 domain
参数添加约束,使其最多有 1 个 .
所以代码看起来像
Route::group(['domain' => '{domain}example.app'], function($group) {
Route::get('/', function ($domain) {
//code
}) ;
// more routes
foreach($group->getRoutes() as $route){
$route->where('domain', '[a-z]+\.{0,1}');
}
});
附言: 我不知道我的正则表达式是否正确。
关于php - Laravel 5,子域路由,带可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32171575/