侧边栏自定义链接会从外部 URL 的查询参数中移除内部主机名

保存侧边栏自定义链接时,如果外部 URL 的查询参数中包含站点自身的域名,该域名会被错误地从查询参数中剥离,从而破坏 URL。

重现步骤

  1. 进入侧边栏设置并添加/编辑自定义链接
  2. 将 URL 设置为一个外部 URL,该 URL 在查询参数中包含您站点的域名,例如一个指向您自己站点的 YouTube 重定向 URL
  3. 保存

预期行为
完整的 URL 会被保留,包括查询参数中的域名。

实际行为
站点的域名从查询参数中被剥离。例如,查询参数部分从 ?q=https://mysite.com/some-path/ 变为 ?q=/some-path/,从而产生一个被破坏的重定向 URL。

使用场景
我们的论坛(teskas.net,一个特斯拉车主社区)有一个侧边栏链接,使用 YouTube 重定向端点来触发特斯拉车载浏览器进入全屏模式。查询参数中必须包含我们的完整站点 URL(包括域名),重定向才能正常工作。

解决方法
对查询参数中的域名部分进行 URL 编码,然后直接写入数据库,绕过表单的标准化处理。

环境

  • 自托管,Discourse v2026.3.0-latest
1 个赞