我希望在我的平台上实现whitelabel解决方案,并且需要为系统或系统实现通配符子域,唯一的问题是我们的系统是自己的子域。所以我需要过滤掉任何特定子域的内容。
// *.website.co.uk
Route::group(['domain' => '{element}.website.co.uk'], function() {
Route::get('/', function ($element) {
dd($element);
});
});
// my.website.co.uk
Route::get('/', 'PagesController@getLogin');
Route::post('/', 'PagesController@postLogin');
但是使用上面的代码我得到错误:
未定义的变量:element
我如何避免此错误?
答案 0 :(得分:2)
一个好方法是排除我的'使用模式。将此代码放在路径文件的顶部:
Route::pattern('element', '(?!^my$)');
或者,可以进入RouteSericeProvider的boot()部分。为了给您一个可行的解决方案,您的代码将变为以下内容(您可以稍后整理!)
Route::pattern('element', '(?!^my$)');
Route::group(['domain' => '{element}.website.co.uk'], function() {
Route::get('/', 'PagesController@getLogin');
Route::post('/', 'PagesController@postLogin');
});
另一种方法是匹配我的'匹配{element}路由之前的路由。然而,虽然许多人这样做,但我认为如果在评论中没有清楚地解释路线的排序可能会更难维持。