和 @codinghorror 一样,我也在使用 Ghost 的 Discourse 集成 使用默认配置,该配置将绝对 URL 用作 discourseEmbedURL。
大约一周前,我决定更改 Ghost 博客的路由,使 URL 如 https://engineerworkshop.com/2020/02/20/how-to-set-up-wireguard-on-a-raspberry-pi/ 的文章重定向到 https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/,其中 https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/ 成为新的永久链接。
问题所在
您可能已经预见到了这个问题:discourseEmbedURL 仍设置为旧 URL,因此当嵌入脚本被调用时(此时 URL 已不同),Discourse 中会创建一个新的评论帖子。
尝试的解决方案(但失败了)
在此之前,我已经预见到了这个问题,并自以为聪明地使用正则表达式配合 remap 来修复 URL:rake posts:remap["[0-9]{4}\/[0-9]{2}\/[0-9]{2}","blog",regex]
虽然这“某种程度上”奏效了,但在原始 Discourse 评论帖子中使用的任何 URL,不幸的是,当我加载博客文章时,Discourse 中又创建了新的评论主题。
最终,我只是重新加载了网站上的每篇文章,并将评论从旧主题转移到了新主题,然后删除了原始主题(我知道,我知道)。显然,删除页面会对 SEO 产生负面影响,更不用说对用户体验的影响了。
我的问题
我猜测我的正则表达式补丁尝试之所以失败,是因为 Discourse 主题在后台 somehow 与 URL 关联。(我坦率承认自己对 Discourse 的数据结构并不了解)。为了未来的知识积累,也为了任何未来可能尝试同样操作的人,是否有办法将 Discourse 主题重新映射到新的博客文章 URL?
提前感谢!