上次更新后,分类的永久链接已损坏,帖子的永久链接工作正常。
例如:category/11562 重定向到 c/11562,这是不正确的,正确设置的重定向目标应该是 c/general/4 或 c/4
有人能帮我解决这个问题吗?
您为 category/11562 创建的永久链接曾重定向到 general,但现在已损坏?
这是哪个更新分支?
对了,它以前运行正常。然后,我更新到了:
<meta name="generator" content="Discourse 3.3.0.beta1-dev - https://github.com/discourse/discourse version 0bb492c6b6b79389a12b277b9d25b99e75f2625d">
完全清空数据库以从头开始重新导入其他论坛数据,现在它不工作了。
我认为这是问题所在,因为我无法在今天早上通过的测试中重现此问题。
你能检查一下永久链接是否仍在你的数据库中,以及它是否仍然指向正确的位置?
您的固定链接不在 /category/11562,而是在 /forum/category/11562。
我猜测您在过程中丢失了固定链接的规范化设置。
我不明白,如果我检查对 https://preview.vaadin.com/forum/category/11562 的响应,我会收到一个 302 和 Location:https://preview.vaadin.com/forum/c/11562。
而对于主题,例如:https://preview.vaadin.com/forum/thread/851770,我会收到一个 301 和 Location:https://preview.vaadin.com/forum/t/tabsheet-tabs-not-displaying-properly-in-ie8-after-upgrade-to-6-7-1/173931。
我期望 Discourse 能够平等地处理两者,正如你所见,两者都保留了 /forum/ 这个片段。
所以你没有提到你的整个论坛都是一个子文件夹安装的事实。
我深入研究了一下,不明白这怎么可能奏效,因为 category/ 总是会触发 categories#redirect 路由,而且这最近也没有改变。
get "category/*path" => "categories#redirect"
编辑:下面的帖子显示它以前确实奏效过。
是的。我无法理解在子文件夹安装中,永久链接和永久链接规范化将如何工作。
而且它一直都是子文件夹安装吗?
而且你在重新运行导入脚本时没有其他任何改变吗?
看起来最有可能的是你的脚本中有一些不同之处。
等等。https://meta.discourse.org/category/67 重定向到 https://meta.discourse.org/c/announcements/67,所以……不,但有一个规范显示永久链接会覆盖那个 /category 重定向,而且它已经有 4-5 年了。
所以我想我会手动创建一些类别重定向来弄清楚发生了什么(比如 /category/mycategory 或其他不包含数字的内容)
好发现 @pfaffman,该测试意味着它确实应该有效。
哇,我甚至不知道那有可能!
感谢您的所有回答!
有趣的是,我们发现只有当原始 URL 中没有名为 /category/ 的路径时,子文件夹中的类别固定链接才能正常工作。正如 @pfaffman 在他的回答中所提到的。例如,/forum/category_foo/123 会正确重定向到目标通用类别。
Discourse 会捕获 /category/ 并将其覆盖为 /c/
因此,这可以很容易地解决:
添加一个从 /c/11562 到类别 General /c/4 的固定链接重定向(来自旧的 category/11562)。
您说得对,第一次安装没有子文件夹,但第二次有子文件夹,这是第三次。我们进行了测试,我相信前两次都有效。第二次和第三次之间唯一的变化是,我们在第一次和第二次之间没有清理数据库,而第三次是在 Docker 外部全新安装并使用新数据库(除了升级到 Discourse v3)。因此,我怀疑 Discourse v3 beta 中有些东西发生了变化。否则,为什么它以前能正常工作,即使没有子文件夹?
这是你的答案
如果我理解正确的话,你的意思是 Discourse 仅在路由中存在段时,才将 /category/ 重定向到 /c/。
不过,以你的论坛为例:https://meta.discourse.org/,如果我输入 https://meta.discourse.org/category/1,我会被重定向到 https://meta.discourse.org/c/bug/1。
这与我们在自己的安装中遇到的情况相同,你的网站也不可能从 /category/#old_number 重定向到 /c/#real_category,你总是会停留在 /c/#old_number。

