通常应该首先声明具有优先权的那个,例如
Route::get('blogs',[WebsiteController::class,'show_blogs_toWebsite'])->name('show_blogs_toWebsite');
Route::get('{cat}',[WebsiteController::class,'dbCategories'])->name('dbCategories');
您还有其他一些选择,例如在路由处理程序中处理这个:
Route::get('{cat}',function ($cat) {
if ($cat === 'blogs') return app()->call([WebsiteController::class,'show_blogs_toWebsite']);
return app()->call([WebsiteController::class,'dbCategories']);
});
这样做的缺点是您丢失了路线名称。
另一种选择是指定一个正则表达式来匹配{cat},例如
Route::get('{cat}',[WebsiteController::class,'dbCategories'])
->name('dbCategories')
->where('cat', '^((?!blogs).)*$');
Route::get('blogs',[WebsiteController::class,'show_blogs_toWebsite'])
->name('show_blogs_toWebsite');
上面的正则表达式来自https://stackoverflow.com/a/406408/487813