为什么Laravel项目点击路由链接跳转后出现多余路径段导致URI错误
问题原因
你使用了不带前置斜杠的相对路径cars/create作为链接的href属性值。相对路径的解析规则为:当前页面地址结尾带斜杠(你当前在http://127.0.0.1:8000/cars/)时,浏览器会把相对路径直接拼接到当前路径的末尾,最终得到的拼接结果就是http://127.0.0.1:8000/cars/ + cars/create = http://127.0.0.1:8000/cars/cars/create,和你预期的路径不符。
解决方案
你可以选择以下任意一种方案修复问题:
- 改为根相对路径:在href的路径前加前置斜杠,告诉浏览器从站点根目录开始解析路径
<a href="/cars/create"></a> - (Laravel推荐)使用路由命名生成链接:先给路由定义别名,后续通过别名生成路径,后期修改路由规则也不需要批量修改页面链接
第一步修改web.php路由定义,增加name方法:
第二步修改页面链接,用route辅助函数生成地址:Route::get('cars/create',function () { return view('carsops.create'); })->name('cars.create');<a href="{{ route('cars.create') }}"></a> - 使用Laravel的url辅助函数生成完整路径:
<a href="{{ url('cars/create') }}"></a>
内容的提问来源于stack exchange,提问作者Varun Sharma
相关产品推荐
相关产品推荐

