Laravel API路由带尾部斜杠访问出现301跳转日志的原因问询
产生两条访问日志的核心原因
这是URL标准化重定向规则和客户端自动跳转共同作用的结果,具体逻辑如下:
- 你通过
Route::resource定义的show路由,实际匹配路径为/api/infos/{info},没有尾部斜杠,是路由的标准匹配格式 - 当访问路径带尾部斜杠(无论多少个连续斜杠)时,首先会触发重定向规则:
- Laravel 9+版本自带
RedirectTrailingSlash中间件,低版本Laravel可由Nginx/Apache的URL重写规则负责,会自动将所有带多余尾部斜杠的路径301永久重定向到去除所有尾部斜杠的标准路径上,这次请求会记录第一条301状态码的日志 - 浏览器/接口请求客户端收到301响应后,会自动按照响应头里的
Location地址发起第二次请求,这次请求匹配到你定义的路由,返回200状态码,记录第二条日志
- Laravel 9+版本自带
- 无尾部斜杠的路径刚好匹配路由定义,不需要重定向,因此只会产生一条200日志
内容的提问来源于stack exchange,提问作者Trần Hưng Vượng
相关产品推荐
相关产品推荐

