edge case 子文件夹设置中的 FAQ 链接问题

首先,这是一个非常特定于我设置(带有 /f 子文件夹)的边缘情况。

汉堡菜单的 Discourse 链接指向 /faq,而没有包含子文件夹,因为 /faq/f 开头

考虑到这段引用:

我想我们可以将

  const found = url.startsWith(baseUri);

改为类似

  const found = url === baseUri || url.startsWith(`${baseUri}/`);

的形式。这样它将匹配 /f/f//f/faq,但不会匹配 /faq,从而正确地为后者添加 baseUri 前缀。

无论如何,该路由本身也无法工作,/f/faq 返回 404 错误,因此我认为在路由器层面也存在类似的逻辑。我之前也注意到 /f/following 无法正常工作(cc @merefield)。

最后,我将 faq url 站点设置更改为 /f/guidelines 作为变通方案,这修复了链接和 404 错误,但也产生了一个小怪象:导航栏上同时显示了“指南”和“常见问题”两个术语,它们都指向 faq url 中设置的内容(您可以在实际页面上查看):

抱歉提出了这样一个包罗万象的话题,涉及三个问题,但我认为它们关联紧密,很难将它们完全分开。

谢谢。

2 个赞

我已提交一个 PR 来解决 get-url 问题:

关于 /f/faq/f/favicon/proxied 出现的 404 错误,当我在容器内部绕过 Nginx 直接 CURL 这些路由时,它们可以正常工作。我通过将 Serve Discourse from a subfolder (path prefix) instead of a subdomain 中描述的 location 指令从 location /subfolder 修改为 location /subfolder/ 解决了该问题。

导航栏同时显示“指南”和“常见问题”是 预期行为,用户不太可能将 faq url 覆盖为相同的 URL。

5 个赞

这是否意味着我们可以放心关闭了?:slight_smile: NGINX 问题已修复,并补充了更多文档?

1 个赞

好的,没问题。我已经在操作指南主题下提出了修改。

谢谢。

1 个赞

哦,那是一个维基,欢迎随时编辑!:heart:

1 个赞