vincentp
(Vincent)
1
这之前运行正常,但最近的更新似乎又导致它失效了。
添加相对链接:
[Full version 1.9.2 change history](/downloads/continuaci/continua-ci-version-history-v192)
链接能够正确渲染,标记也正确,但点击后链接会变成:
https://www.finalbuilder.com/forums/downloads/continuaci/continua-ci-version-history-v192
请注意,我们的 Discourse 实例是作为 forums 下的子目录安装的。
看起来今年早些时候该区域有一些更改,可能与这个问题有关。
当前运行版本为 2.8 beta1 - Commits · discourse/discourse · GitHub
3 个赞
RGJ
(Richard - Communiteq)
2
我认为可以合理地假设,任何相对链接都是相对于子文件夹根目录的。因此,如果您想要一个指向论坛外部的链接,就需要使用完整格式的 URL。
或者,您或许可以设置一个永久链接路由,将 /forum/downloads/* 映射到 https://example.com/downloads/*。
2 个赞
vincentp
(Vincent)
3
这之前是有效的,为什么被更改了?
当相对路径以锚点形式出现时(例如 /downloads),我认为这并非预期的常规行为。在 HTML/HTTP 语境中,这表示网站的根目录,而非子文件夹的根目录。
1 个赞
RGJ
(Richard - Communiteq)
4
那么,如果你的主网站上有一个以 /t/something 开头的链接,你如何判断它是 Discourse 链接还是指向你主网站的链接呢?
1 个赞
它会被写成 /forums/t/something。这是普通用户发布论坛帖子时的预期格式。大多数网站都是这样运作的——谁会知道要输入 /t/something 呢?
1 个赞
Falco
(Falco)
6
我同意 @RGJ 的观点。让多个应用程序共享相同的子文件夹前缀,无异于自找麻烦。
对我来说,这是一个“不会修复”的问题。
2 个赞
vincentp
(Vincent)
7
认真的吗?如果你写的 URL 以 / 开头,那么按设计它就应该位于站点的根目录——你这是在重新定义 HTML 链接的工作原理吗?
在我们的网站上,这功能一直运行良好,持续了 2.5 年,直到最近的破坏性变更。
1 个赞
问题就在于此,Discourse 给多个应用都添加了相同的前缀 /forums,从而引发了上述麻烦。我不明白为什么需要修改帖子中输入的 URL 呢?
1 个赞
sam
(Sam Saffron)
12
我们正在调查此问题,这可能与以下修复有关:
我同意,在 acme.com 上指向 /jobs 的链接应始终跳转到 acme.com/jobs,无论是否配置了子文件夹。它们不应跳转到 acme.com/forum/jobs。
7 个赞
renato
(Renato Atilio)
14
我在链接的那个提交之后的一段时间,对 get-url.js 提交了最后一次更改。
我同意,如果是用户输入的链接,就不应该被重写。也许在这些场景下不应该调用 getURL?我认为 getURL 本意是用于 Discourse 的默认路由,以便将它们“转换”为子文件夹配置。它的一些测试明确期望这种子文件夹的前缀处理:
如果需要任何帮助,请随时告诉我。
eviltrout
(Robin Ward)
15
我今天下午调查了这个问题,并在这个 PR 中提供了修复方案:
不幸的是,我们的 routeTo 代码是设计用来处理相对 URL 的。因此,如果我们调用 url.routeTo("/cool"),而系统配置了 sub 子文件夹,它会将 URL 重写为 /sub/cool,即使 /cool 看起来是相对的。我认为这并不正确,但我敢打赌很多代码都依赖于此行为。
幸运的是,在这种情况下,是点击追踪器因为误认为该 URL 是内部链接而进行了重定向。我添加了一个检查,确保内部链接位于相同的前缀下,并清理了相关测试。目前看来一切正常。
不过,我完全不知道它是如何出现回归的——我尝试使用 git blame 追踪,但一无所获。
6 个赞
vincentp
(Vincent)
19
不确定这是否相关,但在拉取更新后,链接编辑器无法正常工作(显示为空或无法分隔字段)。
vincentp
(Vincent)
20
这似乎更糟。
如果我添加一个链接
[forum relative link](/forums/t/continua-ci-v1-9-2-664-released/7058)
结果会变成
[forum relative link](https:///forums/t/continua-ci-v1-9-2-664-released/7058)
导致渲染时缺少 href 属性。
vincentp
(Vincent)
21
我们还注意到,指向同一站点的相对链接(如 /downloads)会被视为外部链接,并在新浏览器标签页中打开。这其实没什么大碍。
另外,也不是什么大问题,但如果你像我在链接末尾那样移除帖子 ID,点击链接时会丢失浏览器历史记录,例如 此链接。
eviltrout
(Robin Ward)
23
很遗憾,我无法复现此问题。在本地使用完全相同的链接时,它能正常处理。我还想补充一点,我的补丁不应改变链接作为 HTML 的书写方式,它仅处理点击链接时发生的情况。
我认为这个问题已经在处理中了,谢谢:
2 个赞