惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Cloudbric
Cloudbric
V
Visual Studio Blog
L
LangChain Blog
A
About on SuperTechFans
B
Blog
T
Tenable Blog
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Palo Alto Networks Blog
U
Unit 42
WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
C
Check Point Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
S
Securelist
Security Archives - TechRepublic
Security Archives - TechRepublic
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
Latest news
Latest news
GbyAI
GbyAI
T
Troy Hunt's Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
V2EX - 技术
V2EX - 技术
小众软件
小众软件
Google DeepMind News
Google DeepMind News
K
Kaspersky official blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
Netflix TechBlog - Medium
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed

辰渊尘站

道歉信:关于 713 解锁视频中伪回锁内容的说明与反思 - 辰渊尘站 713解锁节来辣!小米17全系,k90pm又能解bl了 - 辰渊尘站 服务器面板迁移:从宝塔到 1Panel - 辰渊尘站 Subconverter 太臃肿?PHP 版轻量化替代来了! - 辰渊尘站 Astro框架Fuwari主题侧边栏添加Umami访问统计 为Fuwari框架适配友链状态显示 免费领取网易云音乐7天会员 小米MiMo Token Plan免费送辣! Astro框架Fuwari主题实现仿hexo-abbrlink功能 观《鬼灭之刃:无限城篇 第一章 猗窝座再袭》首映有感 为你anzhiyu主题的Twikoo评论系统恢复预览按钮 山东泰安泰山游记:煌煌泰山景,谦谦君子风 安知鱼主题:修复背景图修改引发的深色模式可读性问题 安知鱼主题实现友链状态前端显示 我敲!优选DNS牛大了 安知鱼主题侧边栏添加无聊湾 从零开始使用Hexo框架搭建属于你的博客(一)环境准备篇 记录下Hexo博客从本地构建迁移到Netlify,AI API Key 泄露问题与解决方案记录 云服务器宝塔部署Twikoo博客评论系统 手把手教你在Linux系统下部署MCSManager并搭建一个MC服务器 为你的Twikoo添加酷安表情包 记一次花嫁联名借记卡申领过程 为使用anzhiyu主题的博客加上十年之约进度条 有关建站一个月以来的一点点感想和后续计划 这可能是iOS自签的版本答案,二合一LiveContainer教程来辣! iOS侧载新选择!SideStore+LiveContainer,纯净无广,无限安装软件!!! 从零开始使用Hexo框架搭建属于你的博客(零)准备篇 Arch Linux+Hyprland从安装到使用只需这一篇(保姆级喂饭超全教程) - 辰渊尘站 恭喜你找到了本站的第一篇文档 - 辰渊尘站
记录一次博客评论迁移过程
辰渊尘 · 2025-08-20 · via 辰渊尘站

问题背景#

我使用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 config

abbrlink:

- 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 等),最好在改动前做影响评估与回滚计划。

数据无价心莫轻,链接改动慢思量,评论全失才明白,操作谨慎方安康。