Priority/Severity:
中
Platform
| 操作系统 |
浏览器 |
| Windows 11 |
Google Chrome 112.0.5615.138 |
| Ubuntu 22.04 |
Google Chrome 112.0.5615.49 |
| macOS Ventura |
Google Chrome 112.0.5615.137 |
(所有桌面端)
Description:
在以下条件下,帖子中的 BBCode url 标签未能正确渲染:
- 标签包裹的文本以 URL 结尾
- 该 URL 具有主机组件之后的组件(即 路径、查询 和/或 片段)
Reproducible steps:
发表一个包含以下标记的帖子:
[url]http://example.com/[/url]
标记未按预期渲染:

Expected behavior:
标记应渲染为:

Additional context
我能够在 try.discourse.org 的“安全模式”中重现此故障。
以下是处理以 URL 路径结尾的文本的其他示例:
Markup:
[url]http://example.com/foo[/url]
[url]http://example.com/foo/[/url]
[url=http://example.com/]http://example.com/[/url]
[url=http://example.com/]foo http://example.com/[/url]
Rendered:
最初报告于 Old url markup not migrated to new forum - Website and Forum - Arduino Forum
我们有许多帖子是在此标记能够正确渲染时编写的(在迁移到 Discourse 之前,使用的是 SMF 框架)。
3 个赞
sam
(Sam Saffron)
2
我已经确认这是一个核心 bug,我们希望在未来几周内修复。
具体来说:
[url]http://example.com[/url] 可以正常工作,但是:[url]http://example.com/example[/url] 除非添加尾随空格 [url]http://example.com/example [/url] 否则无法正常工作。
我开始逐步调试,看起来是某些东西绊倒了我们的解析器,可能是转义规则。我们会解决这个问题,感谢你提出。
5 个赞
david
(David Taylor)
7
我对这段代码不太熟悉,但快速看了一下。我认为这与自动链接系统有关。当解析器寻找关闭的 URL 标签 [/url] 时,它已经被包含在一个自动链接中。
例如,请注意这里的自动链接指向 http://example.com/foo%5B/url%5D
http://example.com/foo
这就是为什么添加空格有帮助——它阻止了自动链接包含 [/url]

6 个赞
sam
(Sam Saffron)
9
已根据以下内容修复:
欢迎审阅/合并……这是一个相当复杂的修复,@per1234,因为我们支持诸如
[url][b]www.site.com[/b][/url] 之类的疯狂内容。
5 个赞
sam
(Sam Saffron)
13
这都已修复 
[url]http://example.com/foo[/url]
[url]http://example.com/foo/[/url]
[url=http://example.com/]http://example.com/[/url]
[url=http://example.com/]foo http://example.com/[/url]
http://example.com/foo
http://example.com/foo/
http://example.com/
foo http://example.com/
@per1234 您应该已经部署了修复程序,如果一切正常,请告知我们!
感谢您的报告!
1 个赞