URL命中错误的控制器LARAVEL

rol*_*o85 5 php controller routes laravel

在route.php中,我定义了一个到控制器的路由,上面有2个令牌.

Route::get('/{category}/{slug}', 'projectController@detail');
Run Code Online (Sandbox Code Playgroud)

一切正常,直到调用一个具有相同结构但与必须被下面所示的路由捕获的URL无关的URL.

因此,当我有例如"/admin/tags",下面的控制器被触发,因为它具有相同的结构"/{category}/{slug}",当然它给我一个错误,因为它没有找到变量.

所以现在我修复了在底部移动该路线的问题,但我相信我必须提前做一些事情以防止这种行为,因为如果我有多个具有不同令牌的路线,那么每次都会触发一切并且会出现混乱.

那么,在这些情况下它应该做什么呢?

PS我是Laravel的超级初学者

Kri*_*ofe 2

对路由使用一些约束,参考parameters-regular-expression-constraints。例如:

Route::get('user/{name}', function ($name) {
    //
})
->where('name', '[A-Za-z]+');
Run Code Online (Sandbox Code Playgroud)

或者你可以先说最具体的,然后再说不具体的。例如,按照以下顺序:

Route::get("/admin/tags", '......');
Route::get('/{category}/{slug}', 'projectController@detail');
Run Code Online (Sandbox Code Playgroud)