如何在 Discourse 主题 URL 中移除/隐藏主题 ID?

基本上,正如您所看到的,Discourse 中任何主题的 URL 格式如下:

https://meta.discourse.org/t/backup-file-size-discrepancy/157175

而移除主题 ID 后,同一主题可以通过以下 URL 打开:

https://meta.discourse.org/t/backup-file-size-discrepancy

我的论坛规模正在迅速扩大,每天都有大量新主题创建,因此新主题的 URL 变得过长,例如:

https://mydiscourse.com/t/a-new-topic/2198324528479

我希望移除末尾那个过长的主题 ID。

正如您注意到的,我的论坛包含大量主题,每次创建新主题时,主题 ID 都会递增。即使我删除一个主题并创建另一个新主题,新主题 ID 仍会继续递增。Discourse 会保留已删除的主题 ID 不再复用。

我的问题如下:

  1. 我如何在管理员设置中更改此选项,以默认移除主题 URL 中的数字主题 ID?例如,我希望所有主题的默认 URL 格式为 https://meta.discourse.org/t/backup-file-size-discrepancy,而不是 https://meta.discourse.org/t/backup-file-size-discrepancy/157175。我主要希望 URL 对用户友好且对搜索引擎友好,没有人喜欢 URL 中出现过长的数字,尤其是当论坛拥有超过一百万个主题时,数字会变得非常长。过长的 URL 在搜索引擎中的排名较低,也不便于用户记忆。

  2. 当我在 Discourse 中删除一个主题时,如何从管理员界面完全移除该主题,以便旧的已删除主题 ID 能够被重新分配给新创建的主题,从而在论坛创建大量主题时保持 URL 较短?

2 个赞

这两种情况都无法实现。要实现其中任何一种,都需要对 Discourse 进行重大重构。如果必须使用不带主题 ID 的 URL 和/或重复使用 ID,建议您选择其他软件。

4 个赞

我明白了,但如果我访问一个不带话题 ID 的话题 URL,该话题仍然可以正常加载。所以我觉得这个功能已经存在了。我在想,你们是否可以在管理后台添加一个设置项(比如复选框),让用户可以自行选择是否显示话题 ID。如果我将此选项关闭,系统就会将所有话题的 URL 重写为不包含话题 ID 的形式。

但我也在思考,Discourse 会如何处理两个具有完全相同标题或 URL 的话题?如果我在不带话题 ID 的情况下访问,系统会加载哪一个话题呢?

另外,是否有现成的插件可以实现这个功能?您之前还提到了其他一些软件,那么目前有哪些 Discourse 的替代方案,其质量能与 Discourse 相媲美?

此外,我认为如果有人编辑了主题标题,所有仅包含旧标题的现有链接将不再有效。

目前最知名的两款类 Discourse 软件是处于测试版的 FlarumNodeBB。这两者的主题 URL 中都使用了 ID。

3 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.