Laravel将特定域的所有路由传递给控制器

时间:2014-12-17 19:42:00

标签: laravel laravel-4 laravel-routing

使用Laravel 4.2项目。我想要完成的是将每个URI模式传递给控制器​​,然后我可以转到数据库,看看我是否需要重定向此URL(我知道我可以在PHP中执行此操作,而不需要通过Laravel,但只是尝试将其用作学习经验。)

所以我现在所拥有的是:

Route::group(array('domain' => 'sub.domain.com'), function()
{
    Route::get('?', 'RedirectController@index');
});

我正在路由任何我认为是“重定向子域”的子域名... ?是我遇到问题的地方。从我所读到的,你应该可以使用“*”来做任何事情,但这似乎不起作用。任何人都知道如何将任何URL传递给控制器​​?

除此之外,我最好还是要传递完整的URL,以便我可以轻松检查数据库并重定向:

$url = URL::full();

1 个答案:

答案 0 :(得分:2)

试试这个:

Route::group(array('domain' => 'sub.domain.com'), function()
{
    Route::get('{path}', 'RedirectController@index')
        ->where('path', '.*');
});

您的控制器将重新设置路径作为第一个参数

public function index($path){
    // ...
}

如果您想知道,where是必需的,因为没有它{path}只会匹配第一个/之前的路径。这样,所有字符,即使/,都被允许作为路由参数