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

Laravel路由生成的URL末尾带问号的原因是什么?

为什么我的Laravel生成的URL末尾会有问号?

这个问号出现的原因其实很直观,和浏览器处理GET表单的行为直接相关:

  1. 核心原因
    你的表单默认使用的是GET请求方法,而且表单内部没有任何需要提交的表单字段(比如<input>、<select>这类元素)。当浏览器处理GET类型的表单提交时,即使没有参数要传递,它也会自动在URL末尾添加一个问号,用来标识URL中查询参数部分的起始位置——哪怕这部分是空的。

  2. 解决办法
    针对你的场景(跳转到文件编辑页面,这是一个GET请求的页面路由),最合理的解决方式是把表单换成<a>标签,因为这类页面跳转本来就应该用链接来实现,而非表单:

    <a href="{{route('files.edit', $file->id)}}" class="btn btn-success btn-sm">Edit file</a>
    

    这样生成的URL就会是干净的http://testproject.local/files/17/edit,不会有多余的问号。

    如果你一定要保留表单的写法,也可以添加一个隐藏的表单字段(哪怕是无业务意义的),浏览器就会把字段作为参数携带,问号之后会有具体的参数内容;不过这种做法没必要——用链接才是更符合RESTful设计的做法。

  3. 额外小提示
    你的files.edit路由是用来显示编辑表单的GET路由,这类“获取页面”的操作,用<a>标签是更标准的做法;表单更多应该用在提交数据的场景(比如后续的文件更新操作,应该用PUT/PATCH请求配合表单)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:07:41