情境:
使用Laravel 5.2 / Digital Ocean / Laravel Forge(在安装站点时启用通配符域)
每个用户都有自己的子域名。
主域名:mydomain.com
用户域:{user} .mydomain.com
在域中添加了DNS记录(A) - * - ip address
。
路线:
Route::group(['domain' => '{user}.mydomain.com'], function () {
return 'This user has a domain.';
Route::get('user/{id}', function ($account, $id) {
//
});
});
Route::get('/', function () {
return view('pages.home');
});
问题:
每个用户子域都将跳过group domain
并进入正常Route get '/'
。所以它不会返回'This user has a domain.';
。出了什么问题?
答案 0 :(得分:1)
当您通过Laravel Forge创建新网站时,请务必勾选 允许通配符子域选项:
然后确保使用以下内容在DNS中创建新的A记录 选项,使用您服务器的IP地址,在这种情况下您正在使用 数字海洋,所以你会输入你的新记录,如下:
这就是你需要做的,现在等待你的DNS记录更新和 那么你将能够使用你的子域实现路由 这样:
Route::group(['domain' => '{user}.mydomain.com'], function () {
Route::get('/', function ($user) {
return 'You are visiting the sub-domain for user: '.$user;
});
});
我希望这有帮助!祝你好运:)
答案 1 :(得分:1)
首先,您需要删除return 'This user has a domain.';
,因为它会阻止此路由user/{id}
注册。其次,尝试向子域添加默认路由:
Route::group(['domain' => '{user}.mydomain.com'], function () {
Route::get('/', function ($user) {
return "This user has a domain: $user";
});
Route::get('user/{id}', function ($account, $id) {
//
});
});
我希望这会对你有所帮助。