Laravel路由匹配前缀后的所有内容

时间:2015-05-24 07:02:35

标签: laravel laravel-4 laravel-5 laravel-routing

我正在尝试匹配URL中的路径,如下所示

我的HTTP请求

http://localhost/myprefix/extra/x/x/x/x/x/2/3/2/

routes.php文件

Route::group(
    ['prefix' => 'myprefix'],
    function () {
        Route::get('extra/{path}', ['as' => 'myprefix.one', 'uses' => 'MyController@index']);
        Route::get('extraOTher/{path}', ['as' => 'myprefix.two', 'uses' => 'MyController@indexOther']);
    }
);

MyController.php

public function index($path)
{
    // $path should be extra/x/x/x/x/x/2/3/2/
}

这一直给我错误

NotFoundHttpException in RouteCollection.php line 145:

我怎样才能使这个工作?我在某处读到:任何和:所有但我无法使这些工作。

1 个答案:

答案 0 :(得分:3)

有点hacky。

routes.php文件:

Route::group(
    ['prefix' => 'myprefix'],
    function () {
        Route::get('extra/{path}', ['as' => 'myprefix.one', 'uses' => 'MyController@index']);
        Route::get('extraOTher/{path}', ['as' => 'myprefix.two', 'uses' => 'MyController@indexOther']);
    }
);

添加图案。

Route::pattern('path', '[a-zA-Z0-9-/]+');

现在它将捕获所有路线。

Controller.php这样:

public function index($path)
{
    echo $path; // outputs x/x/x/2/3/4/ whatever there is. 

    // To get the prefix with all the segements,

    echo substr(parse_url(\Request::url())['path'],1);
}

不优雅。但它应该做到这一点。