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

Laravel为何执行最后匹配的路由?路由匹配行为异常咨询

Laravel重复路由为何会执行最后一条?

当你在Laravel中多次定义相同HTTP方法+相同URI的路由时,后续注册的路由会直接覆盖之前的。

原因很简单:Laravel内部维护着一个路由集合,它用「请求方法+URI」作为唯一标识来存储路由规则。每次调用Route::get('/', ...)这类方法,都是在向这个集合里添加或更新路由——如果标识已经存在,新的路由逻辑(闭包/控制器)就会替换掉旧的。

看你给出的代码:

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return 'Hello, World!';
});
Route::get('/', function () {
    return view('welcome');
});
Route::get('/', function () {
    return 'Hello, World 2!';
});

第一条路由先被注册,第二条注册时因为标识重复,直接替换掉第一条;第三条又替换掉第二条。所以当你请求/时,实际匹配到的是最后一次注册的那条路由,自然返回Hello, World 2!。删掉第三条后,第二条就成了最后注册的,请求就会走它的逻辑。

总结一下:Laravel的路由“匹配第一个符合条件的”规则,仅适用于不同标识的路由;当路由的方法和URI完全相同时,会以最后一次注册的路由为准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:52:04