You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel访问/gigs/create路由错误跳转至/gigs/{id}路由问题

Laravel路由匹配冲突解决方法

核心原因

Laravel路由遵循自上而下优先匹配规则,你当前将带通配参数的路由/gigs/{id}定义在固定路径路由/gigs/create之前,访问/gigs/create时系统会优先匹配到前者,将create识别为id参数传入,所以触发了错误的控制器方法。

解决方案

方案一:调整路由定义顺序(最直接)

将无参数的固定路径路由放在通配参数路由之前,修改web.php的路由定义顺序即可:

// 固定路径路由放前面
Route::get('/gigs/create', [GigsController::class, 'create'])->name('clientside.gigs.create');
// 通配参数路由放后面
Route::get('/gigs/{id}', [GigsController::class, 'info'])->name('clientside.gigs_info');

方案二:给参数增加正则约束(更严谨,推荐搭配使用)

给/gigs/{id}路由的id参数增加格式限制,要求必须为数字,这样非数字的create就不会匹配到该路由:

Route::get('/gigs/{id}', [GigsController::class, 'info'])
    ->name('clientside.gigs_info')
    ->where('id', '[0-9]+'); // 限定id仅能为正整数

两种方案可以同时使用,能避免后续新增同层级路由时再次出现同类匹配冲突。


内容的提问来源于stack exchange,提问作者n9p4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:24:08