alldritt
(Mark Alldritt)
2020 年12 月 5 日 22:28
1
大家好,
我计划将现有的社区(macscripter.net - Mac OS 自动化讨论)从 FluxBB 迁移到 Discourse。这篇文章 在数据迁移方面看起来很有希望。这将是一项艰巨的工作,因为我有超过 30,000 名用户和 120,000 篇帖子,但似乎是可以完成的。
不过,我希望保留所有传入链接。macscripter.net 是苹果自动化社区的重要参考资源。我们拥有近 20 年的帖子,其中大量引用出现在其他网站和邮件列表存档中,我不想让这些链接失效。
我正在寻找一种方法,将传入的 FluxBB 帖子链接转换为对应的 Discourse 帖子链接?我没有在标准 Discourse 中看到实现此功能的方法,因此我推测需要创建某种插件来响应 FluxBB 的 /viewtopic.php?id=##### 链接,并将其重定向到相应的 Discourse 链接。如果其他人有解决此类问题的经验,我很想听听你们是如何处理的。
感谢任何建议。
此致,
-Mark
1 个赞
pfaffman
(Jay Pfaffman)
2020 年12 月 5 日 23:09
2
Most import scripts create permalinks that handle the redirects. I don’t know offhand if they one does. If not, you can look at one of the others for example code.
2 个赞
我也有同样的问题,我对答案有点困惑。我也想做一个相当大的 FluxBB 导入。
我看到 Discourse 中有一个名为“永久链接”(Permalinks)(https://meta.discourse.org/t/how-to-make-a-redirect-url-in-a-discourse-install/40973/4)的功能,所以我们说通过创建这些东西,Discourse 可以将 FluxBB 风格的 URL,例如“/viewtopic.php?id=((old topic id))”,重定向到“/t/((new topic slug))/((new topic id))”。也许对主题中的单个帖子也一样?用户个人资料 URL 也一样。(所以我们需要很多 永久链接)。我看到了永久链接的数据库表。
这听起来像一个很棒的解决方案,但 FluxBB 导入器没有创建任何永久链接。我找不到任何相关的代码。事实上,我在任何 导入脚本中都找不到任何用于此目的的代码(没有提到“Permalink”ActiveRecord 模型)。
我很乐意修改 fluxbb 导入器来完成这项工作,但其他导入器中有示例吗?
我确实 在代码中看到的唯一类似的东西是初始化“LookupContainer ”并存储所有旧 ID 及其对应的新 ID。这可以用于创建许多 Permalink 对象吗?
pfaffman
(Jay Pfaffman)
2022 年11 月 10 日 16:23
4
对了。
查看 vbulletin 导入器(还有 answerhub、vanilla、mylittleforum、bbpress、drupal 等——也许你进行了区分大小写的搜索或其他操作),它在 import_topics 函数中执行此操作(忽略 permalink 文件函数)。您将需要添加永久链接的代码以及一个 permalink_normalization,将 fluxbb URL 映射到您创建的任何永久链接。
呀!你说得对。我的 IDE 搜索在捉弄我。事实上,有很多“Permalink”对象的创建示例。所以也许我会考虑将此添加到 FluxBB 导入中。
我想知道你的大型导入进行得怎么样了,@alldritt 。嗯,看起来 macscripter.net 仍然在使用 FluxBB,所以进行得不太顺利? 如果你注意到 fluxbb 导入器没有很好地转换 bbcode,我一直在努力修复这些问题:Pull request in progress 。
这些讨论之间存在一个有趣的(尴尬的)重叠,因为 FluxBB 支持 [post=123] 形式的 bbcode,通过 ID 链接到另一个帖子(引用源 FluxBB 系统中的旧帖子 ID)。如果我们有一个解决方案来重定向这些 ID,处理起来会更容易。
1 个赞
pfaffman
(Jay Pfaffman)
2022 年11 月 10 日 17:26
6
不会的。永久链接仅适用于外部链接,不适用于内部链接。您需要编写一些内容来重写这些内部链接,使其成为 Discourse 的引用。也有这方面的示例。
alldritt
(Mark Alldritt)
2022 年11 月 10 日 17:58
7
感谢您重新开启这个话题!
我尝试了几次转换,但都放弃了。随着我换用了 M1 Mac,我失去了 Discourse 测试环境,并且从未抽出时间重新创建它。我希望一旦有空闲时间,能尽快回到这个项目。处理现有链接的重定向是我一直在努力解决的问题。我还没有来得及验证所有的 BBCode 是否都已正确翻译。我有超过 130,000 条帖子需要转换,这让人望而生畏。
希望这对您有所帮助。昨天我正在做一些工作,为 FluxBB 导入器添加 create_permlinks 功能。
目前这部分内容在我正在进行中的拉取请求中。请参阅提交 “为 FluxBB 导入器添加永久链接创建逻辑” 在此列表的末尾 。我希望在某个时候将所有这些合并,可能顺序不同(我目前正在等待有人审查这个基础拉取请求 作为起点)
因此,这将为四种不同类型的 FluxBB URL 创建重定向。
profile.php?id=<user id>
viewtopic.php?pid=<post id>
viewtopic.php?id=<topic id>
viewforum.php?id=<forum id>
我认为这四种涵盖了人们希望保留工作链接的所有内容。您怎么看?
回到 FluxBB 的特殊内部链接主题
Pfaffman:
永久链接仅适用于传入链接,不适用于内部链接
我不会尝试将它们保留为新 discourse 中的内部链接。懒惰的解决方案:它们将链接到旧的 fluxbb 论坛 URL(作为完整 URL,因此是外部链接),由于这些永久链接,然后将用户重定向回新 discourse 中的正确位置。
pfaffman
(Jay Pfaffman)
2022 年11 月 14 日 14:56
9
我认为你懒惰的解决方案可能会奏效。如果你愿意,可以找到重写内部链接的例子,但懒惰也可能很好。
1 个赞