重现方法
编辑帖子并使用链接工具。粘贴相对 URL,例如 /g/moderators 在任何 Discourse 安装上都应该是合法的。
链接工具会生成链接的 Markdown,但会将相对 URL 扩展为在前面加上“https://”。
发布后会发现最终显示的链接实际上不是一个可点击的链接。
就像这里一样 这样 链接坏掉了。
*悲伤的伸缩号*
等等,scheme:///path?
我的 BNR 已经生疏了,但我相信 RFC 1808 说 Scheme,没有 authority,并且有 path,是合法的。即 https:///g/moderators 完全合法。我尝试过的几个在线 URL 解析器也同意。所以我认为(尽管看起来很奇怪的 URL)作为 A 标签的 HREF 属性值,应该是没问题的。
因此,编辑器中的链接工具在技术上并没有破坏 URL。错误在于 cook/render/whatever 阶段。
解决方法很简单
在与员工的电子邮件中,这句话是:“它就是这样工作的。”
自己写 Markdown 并使用相对 URL。
或者注意到链接工具在捣乱,直接在帖子编辑器中将 https:// 编辑掉,改为我输入的相对 URL。
……但手动输入 URL、输入文字、按 opt-shift-arrow 选择一些文字、按 cmd-k、cmd-v、enter,然后链接起来,会更快。
修复
我认为这应该通过(优先修复)来解决……
- 不要在链接工具中自动完成相对 URL(即修复链接工具)
- 如果你坚持让链接工具重写以添加 Scheme(这没有任何作用,因为浏览器无论如何都会使用相同的 Scheme,如果 URL 是相对的),那么让这种看起来奇怪但正确的
scheme:///pathURL 在最终的 HTML 渲染中正确地 cook(这是正确的动词吗?)以便链接能够工作(修复最终的 cook/rendering) - 不行?好吧,那么让链接工具在看到相对 URL 时,用实际的
scheme://authority自动完成 URL(这可能是对最广泛用户群体来说最清晰的改变:大量的 Discourse 用户 不会粘贴相对路径,而相对来说数量非常少但可能更懂技术的论坛 员工、管理员 和 版主,当他们这样做时会理解它的作用。) - 真的吗?好吧,那么不允许在链接工具中输入相对 URL(但这太糟糕了,而且会迫使人们打破他们
cmd|ctl—k的习惯。) - 将此添加到未优先处理的损坏列表;)