批量导入重定向到新的 Discourse 主题

大家好,

我最近成功地将我的网站从一个旧的自定义平台迁移到了 Discourse。但是,我现在面临着将永久链接/重定向导入到新的 Discourse 主题的挑战。我已经获得了 Discourse 中所有帖子的 ID,并且正在探索通过 API 或命令行导入这些重定向的选项,因为由于数量庞大,手动导入是不可行的。

请问大家是否有任何方法或工具可以有效地将重定向链接导入到新的 Discourse 主题?非常感谢您的见解和建议。

提前致谢!

如果你的迁移是基于导入脚本的,那么主题(可能还有帖子)会包含一个 import_id 自定义字段。然后,你可以使用这些自定义字段、永久链接(Permalinks)和 SiteSetting.permalink_normalizations 来进行重定向。

你可以使用类似以下命令在 Rails 中进行测试:

tcfs=TopicCustomField.where(name: 'import_id')
pcfs=PostCustomField.where(name: 'import_id')

如果你没有这些,那么将会非常困难。

如果你确实有这些,那么你可以这样做:

tcfs.each do |tcf|
  Permalink.create(url: "imported-topic/#{tcf.value}", topic_id: tcf.topic_id)
end

然后创建一个 PermalinkNormalization 来将主题的路径重定向到 /imported-topic/IMPORTED_ID

你可以 grep import_scripts 来查找一些设置了 Permalinks 和 permalink normalization 的其他导入脚本。

1 个赞

谢谢你的回复,Jay。我没有使用导入脚本进行迁移,而是选择了 API 集成,因为结构是自定义的。我开发了一个 Python 脚本来使用 API 导入帖子,并且我已成功为每个主题获取了新的主题 ID。尽管导入了带有新的主题 ID/URL 的旧 URL,覆盖了大约 6k 页,但没有一个映射按预期工作。你能否就我可能遗漏的内容以及如何纠正此问题提供建议?非常感谢你的指导。