Laravel子域路由和资源控制器

时间:2014-05-20 02:54:54

标签: php laravel routing subdomain

这是我的路线:

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');

    });
});

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

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

用例示例:

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

foo.example.com/forum/1

bar.example.com/forum/2

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

1 个答案:

答案 0 :(得分: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');

    });