Laravel子域路由和资源控制器

Jon*_*how 2 php subdomain routing laravel

这是我的路线:

Route::group(array('domain'=>'{subdomain}.example.com'), function()  
{
    Route::group(array('before'=>array('authenticate')), function()
    {
        Route::resource('post', 'PostController');

        Route::resource('comments', 'CommentsController');

        Route::resource('forum', 'ForumController');

        Route::resource('users', 'UsersController');

    });
});
Run Code Online (Sandbox Code Playgroud)

似乎默认情况下我所有的资源控制器都将子域作为第一个参数,我找不到改变它的方法.

如果可能的话,我想完全忽略子域名.

用例示例:

admin.example.com/forum/1?domain=foo

foo.example.com/forum/1

bar.example.com/forum/2

该网站拥有2个论坛,但只有1个管理员管理所有这些论坛.要管理员访问论坛foo,管理员还必须提供domain = foo来查看它.

Lau*_*nce 6

如果您不想基于子域路由,那么您应该只过滤子域以进行访问.

Route::filter('subdomain', function($route, $request) 
{
    $host = $request->getHost();
    $parts = explode('.', $host);
    $subdomain = $parts[0];

    if ($subdomain == 'something')
    {
         // Allow or deny
    }
});


Route::group(array('before'=>array('subdomain|authenticate')), function()
    {
        Route::resource('post', 'PostController');

        Route::resource('comments', 'CommentsController');

        Route::resource('forum', 'ForumController');

        Route::resource('users', 'UsersController');

    });
Run Code Online (Sandbox Code Playgroud)