子文件夹在 2.5.0.beta6 之后重写(但不重定向)到主域名

我有两个容器(1 个 Discourse 和 1 个 WordPress)以及一个 Nginx 反向代理,负责将流量路由到:

  • WordPress:mydomain.com 下任何不包含 /community 的 URL;
  • Discourse:当 URL 为 mydomain.com/community 时。

这一配置已稳定运行了一年。但在升级到 2.5.0.beta6 后,我注意到访问 mydomain.com/community 时,URL 被重写为 mydomain.com,但并未实际重定向到 mydomain.com,因此 Discourse 仍能正常工作(尽管控制台中出现了一些 404 错误)。

如果访问某个话题页面,URL 会被重写并包含 /community
如果进入管理后台,URL 中不会出现 /community,但我仍然可以执行任何管理修改。

当然,如果手动刷新页面且 URL 中不包含 /community,则会被重定向到 WordPress。

如果您想查看实际运行情况:brigadedufric.com/community/(请去除空格)

  1. 我该如何尝试修复此问题?
  2. 如果太复杂,我可能考虑将所有内容从子目录迁移到子域名,以避免未来出现任何问题。关于迁移方案及需要注意的事项,您有什么建议吗?

我认为这是一个 bug,因为我在升级后,在子文件夹设置中也遇到了同样的问题。

直接访问 URL 时一切正常,标记中的链接也是正确的,但当 JavaScript 接管页面间导航时,它在调用 history.pushState() 时会省略 URL 中的子文件夹路径。

因此,虽然导航功能正常,但呈现给用户的 URL 是错误的,这带来了一些问题:如果有人复制该链接进行分享,访问时将会出现 404 错误。

你已经提出了解决这个问题的永久方案 :wink:

子文件夹安装仍会存在此类小毛病,因为它既不被推荐,也未得到广泛采用。那些有理由使用子文件夹的用户,通常不得不反复报告这些问题才能促使它们得到修复。

因此,我给你的最佳建议是使用子域名,然后就此搞定。

我不同意这一点……子文件夹可能设置起来更麻烦,但近几年几乎没有出现任何漏洞。

@dbrookes 这个问题在我更新到 1c48853ede 后已解决。

我今年仍计划安排时间将子文件夹迁移到子域名。如果有任何指南可以分享,我将不胜感激 :smiley: