静态和通配符Laravel子域

时间:2017-02-05 14:37:51

标签: php laravel subdomain

我想建立一个网站,每个用户在我的网站中拥有自己的子域名。但除此之外,我需要子域来管理我的网站。

所以,我需要的是:

mysite.com  ---> main web
admin.mysite.com  ---> for administrator my web
blog.mysite.com  ---> for artikel my web
member.mysite.com  ---> for main account
*.mysite.com  ---> for users

我正在使用laravel 5.4 那么,我怎么写我的路线?

Route::group(array('domain' => '{subdomain}.mysite.com'), function() {
    //
});

之前感谢。

1 个答案:

答案 0 :(得分:1)

路由文件应首先包含静态子域,并在最后捕获所有子域。订单很重要。

// mysite.com
Route::group([ 'domain' => 'mysite.com' ], function () {
    Route::get('/', 'MySiteController@home');
});

// admin.mysite.com
Route::group([ 'domain' => 'admin.mysite.com' ], function () {
    Route::get('/', 'MySiteAdminController@home');
});

// blog.mysite.com
Route::group([ 'domain' => 'blog.mysite.com' ], function () {
    Route::get('/', 'MySiteBlogController@home');
});

// user subdomains
Route::group([ 'domain' => '{account}.mysite.com' ], function () {
    Route::get('/', 'TenantController@home');
    Route::get('/user/{id}', 'TenantController@userIndex');
});

示例捕获所有控制器

class TenantController {

    public function home($account)
    {
        return 'This is home for account '.$account;
    }

    public function userIndex($account, $id)
    {
        //
    }

}