604 字
2 分钟
记录一次博客评论迁移过程
问题背景
我使用abbrlink插件默认参数设置发现有概率为文章生成纯数字链接,例如abbrlink: 114514,然后链接转二维码的api就这样活生生炸了,我很纳闷,一般来说url不应该出现此问题,但事实就是如此,既来之则安知,修!
abbrlink是Hexo的一个插件,用来给文章生成唯一ID(短链),这样文章的链接就不会随标题变化而改变。
于是按照ai说的把abbrlink插件配置修改了下:
- permalink: posts/:abbrlink/+ permalink: posts/p:abbrlink/# 一个 Hexo 插件,用于根据帖子正面的标题和数据生成静态帖子链接。# https://github.com/rozbo/hexo-abbrlink# abbrlink configabbrlink:- alg: crc16 #support crc16(default) and crc32+ alg: crc32 #support crc16(default) and crc32 rep: hex #support dec(default) and hex drafts: false #(true)处理草稿,(false)不处理草稿。false(默认值) # 从目录树生成类别 # 深度:要生成的目录树的最大深度应大于0 auto_category: enable: true #true(default) depth: #3(default) over_write: false auto_title: false #启用自动标题,可以按路径自动填充标题 auto_date: false #启用自动日期,它可以自动填写日期的时间今天 force: false #启用强制模式,在这种模式下,插件将忽略缓存,并为每个帖子计算abbrlink,即使它已经有了abbrlink。这样如此链接就不可能是纯数字,ai还说老文章不受影响,我就放心改完上传了。让我没想到的是它会把老文章一起改了,进而引发了这场惨案。
问题暴露
我一开始并没有发现,高高兴兴把昼夜切换按钮的bug修了,后面测试移动端排版的时候瞥了一眼评论区。我擦!我评论咋全没了。马上开始排查,发现最终罪魁就是 abbrlink 的配置改动导致旧链接结构不一致,评论指向的旧 /posts/7e9 变成了 /posts/p7e9,页面上匹配不到原来的评论条目。
解决思路
于是我用Navicat连上了MongoDB,手动修改。
WARNING在开始任何批量替换前,务必备份数据库!!!不要学我!
# 备份整个数据库mongodump --uri="mongodb://<user>:<pass>@<host>:<port>/<dbname>" --out ./backup_2025-08-20# 恢复示例mongorestore --uri="mongodb://<user>:<pass>@<host>:<port>/" ./backup_2025-08-20
之后觉得效率太低了,去学习了下SQL查询的语法(技能+1)
写了个简易替换脚本:
var oldSlug = "7e9"; // 替换前var newSlug = "p7e9"; // 替换后
db.comment.updateMany( { $or: [ { url: { $regex: "/posts/" + oldSlug } }, { href: { $regex: "/posts/" + oldSlug } } ] }, [ { $set: { url: { $replaceOne: { input: "$url", find: "/posts/" + oldSlug, replacement: "/posts/" + newSlug } }, href: { $replaceOne: { input: "$href", find: "/posts/" + oldSlug, replacement: "/posts/" + newSlug } } } } ])替换效率更高一点,同一篇文档下所有评论都可以一键替换,还好我文章发的不多,除去学习发现时间,替换就花了5分钟的样子,完美解决。
经验总结
- 先备份,再动手(重要且不重复)。
- 在生产库上做批量修改前,先在测试或少量样本上验证。
- 修改链接/路由时要意识到可能影响历史数据(评论、外链、SEO 等),最好在改动前做影响评估与回滚计划。
数据无价心莫轻,链接改动慢思量,评论全失才明白,操作谨慎方安康。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
记录一次博客评论迁移过程
https://blog.mcxiaochen.top/posts/pcb573663/ 部分信息可能已经过时
相关文章 智能推荐
1
为Fuwari框架适配友链状态显示
教程 为Astro框架的Fuwari主题适配友链状态显示功能,实时展示友链延迟信息
2
记录下Hexo博客从本地构建迁移到Netlify,AI API Key 泄露问题与解决方案记录
教程 Hexo迁移Netlify与API Key安全方案
3
Astro框架Fuwari主题侧边栏添加Umami访问统计
教程 在Fuwari主题侧边栏添加Umami统计,展示当前在线、今日访客、今日浏览、昨日浏览、本月浏览、总浏览等数据
4
Astro框架Fuwari主题实现仿hexo-abbrlink功能
教程 实现仿hexo-abbrlink功能,就是不知道改的史山有没有副作用,自己目前用着没发现问题就分享出来了,建议先自行本地部署测试后再并入生产力
5
为使用anzhiyu主题的博客加上十年之约进度条
教程 为使用anzhiyu主题的博客添加十年之约进度条功能