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

Laravel 5.6请求URL参数重复:如何避免语言标识重复?

解决Laravel中URL语言参数重复的问题

这个问题我之前也碰到过,核心原因是你用相对路径拼接的时候,浏览器会把当前页面的路径作为基础来解析。比如当前页面已经在/en下,你写{{Request::segment(1)}}/training就相当于在当前路径后追加en/training,自然就变成了/en/en/training。

给你几个靠谱的解决办法:

1. 推荐:使用命名路由(最规范的做法)

先在你的路由文件里给训练页面的路由起个名字:

Route::get('/{lang}/training', [TrainingController::class, 'show'])->name('training');

然后在视图里用route()辅助函数生成链接,把语言参数传进去:

<a href="{{ route('training', ['lang' => Request::segment(1)]) }}">进入训练页面</a>

这样Laravel会自动帮你生成正确的绝对路径,完全不用担心重复的问题,而且以后如果路由结构调整,只需要修改路由定义,不用改视图里的链接,维护起来更方便。

2. 使用url()辅助函数生成绝对路径

如果暂时不想用命名路由,可以直接用url()函数基于应用根URL来拼接:

<a href="{{ url(Request::segment(1), 'training') }}">进入训练页面</a>

url()会自动帮你处理路径拼接,生成http://localhost/public/en/training这样的正确URL。

3. 用URL::to()方法拼接

和url()类似,也可以用门面类的方式:

<a href="{{ URL::to(Request::segment(1) . '/training') }}">进入训练页面</a>

或者用多参数的形式更简洁:

<a href="{{ URL::to(Request::segment(1), 'training') }}">进入训练页面</a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:08:35