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

Laravel 9手枪赛事系统邮件链接格式错误原因排查

问题分析与解决方案

你的问题出在Laravel版本升级后,url()函数的参数处理逻辑变化,以及$notification->link的内容可能不符合Laravel 9的url()函数预期。

核心原因

在Laravel 5.3中,url()函数如果传入的是完整URL(带域名),会直接返回该URL;但Laravel 9的url()函数会将传入的字符串视为路径片段,即使它包含完整域名,也会拼接到当前配置的APP_URL之后,导致生成错误的嵌套链接(比如你看到的http://shoot.mywire.org/${http://shoot.mywire.org}/app/competitions/39)。

另外,也有可能是新系统中$notification->link的赋值逻辑出错:原本旧系统里它存储的是相对路径(比如/app/competitions/39),但新系统中错误地存储成了完整URL,再经过url()二次拼接就出问题了。

解决方法

  1. 直接输出完整链接(如果$notification->link已经是正确的完整URL)
    把模板里的代码改成:

    {{ $notification->link }}
    

    不需要用url()包裹,直接输出即可。

  2. 用相对路径配合url()(如果$notification->link是相对路径)
    确认$notification->link的值是相对路径(比如/app/competitions/39),同时检查.env文件中的APP_URL是否设置为http://shoot.mywire.org,此时url($notification->link)会正确生成完整链接。

  3. 推荐使用路由生成链接(更可靠)
    如果你为赛事页面定义了命名路由(比如competition.show),直接用route()函数生成链接,避免硬编码路径的问题:

    {{ route('competition.show', $notification->competition_id) }}
    

    这种方式会自动根据路由配置生成正确的URL,不受Laravel版本升级的路径拼接逻辑影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:54:59