首页 > 解决方案 > 如何解决路由匹配问题

问题描述

我配置了两条路线。

Route::get("/team/{team}", "TeamController@show");
Route::get("/team/members", "TeamController@members");

但是,当我想访问该路线/team/members时,我会被误导到该路线/team/{team}

我尝试使用正则表达式来限制引导方法中的路由参数RouteServiceProvider

public function boot()
{
    parent::boot();

    Route::pattern('members', "/^((?!members).)*$/is");
}

但它没有用。

使用 postman 访问接口仍然是引导到/team/show路由。所以我该怎么做?

标签: phplaravel

解决方案


您需要更改路线的顺序,否则{team}还会赶上'members'

Route::get("/team/members", "TeamController@members");
Route::get("/team/{team}", "TeamController@show");

Laravel 总是使用第一个匹配的路由。


推荐阅读