老图床域名失效,我博客里几百篇旧文的图全挂了:一个周末的抢救记录

周五晚上十一点多,我收到一封读者邮件,只有一句话:“你好,你那篇讲环境搭建的教程,里面的截图好像都打不开了。”

我当时没太在意,以为是他网络问题。结果随手点开那篇文章,心里咯噔一下——不是一张图裂,是整篇的截图全是碎图标。再往前翻了几篇更早的文章,好家伙,凡是早年托管在某个免费图床上的配图,几乎全军覆没。那个图床的域名直接解析不动了,等于我博客里好几年攒下的配图,一夜之间被人“拔了电源”。

那个周末本来计划出门,最后老老实实坐在电脑前抢救了一天半。把过程记下来,给同样在用免费图床、或者博客历史悠久的朋友提个醒。

周六上午:以为改几张就行,一查发现是个工程

最开始我天真地想,大不了把裂的图重新传一遍、改改链接。但当我用关键词在文章目录里一搜,心就凉了半截——中招的不是三五篇,是横跨两三年的一大批文章。

手改肯定不现实,我决定先搞清楚两件事:到底有多少张图、它们分别挂在哪几个域名上。

博客都是 Markdown 源文件,图片链接长得都一样,于是写了段十几行的脚本,递归遍历文章目录,用正则 !\[.*?\]\((https?://[^)\s]+)\) 把图片链接全抽出来,去重之后按域名归类统计。结果很说明问题:去重后大部分图集中在那个已经挂掉的老域名上,但还有两个域名的图其实活得好好的。

这一步特别重要——它让我意识到不用“全救”,只救死掉的那一批就行,工作量一下小了很多。

周六下午:给每条链接“验明正身”

光看域名还不够,同一个域名下也可能有的图能开、有的不能开;还有些图返回 403,其实是被防盗链拦了,并不是真没了。

我又写了个小脚本,用线程池并发地给每条链接发请求探活,把结果分成几类:

  • 域名解析失败、超时的,判“死刑”,只能找本地原图;
  • 返回 404 的,也是真没了;
  • 返回 403 的,我再带一个空 Referer 试一次——能开就说明图还在、只是不许外链,这种可以转存;
  • 返回 200 的,当然还活着。

跑完导出一张表,哪些能直接救、哪些得翻硬盘找原图,一目了然。顺带说一句,那批“判死刑”的图,幸亏我当年有个好习惯:截图原件一直留在本地一个文件夹里,没删。 那一刻真的想给自己磕一个,备份这种东西,平时嫌占地方,出事时就是救命稻草。

周六晚上:能抓的让服务器抓,别跟自己带宽较劲

接下来是把图搬到新图源。还能访问的那批旧图,我起初想当然地准备“先全部下载到本地、再一张张上传”,下了几十张就觉得不对劲——几百张图这么折腾,又慢又容易乱。

后来我换了个思路:直接让图床服务器去旧地址抓。我把探活后确认还能访问的 URL 整理出来,贴进我平时在用的图床小镇的 URL 批量上传里,由它服务端逐条抓取转存,我这边不用先下载、也不用守着进度;它存图时会按多级目录加随机路径,正好解决了我一个大麻烦——我不同文章里有大量都叫 screenshot.png、image.png 的同名图,要是平铺在一个目录里铁定互相覆盖。同名文件重复传链接也不变,迁移过程中对照新旧链接特别省心。至于那批本地有原件的“死图”,我就直接在网页上多选、拖拽,一次性传上去。

不管你用哪个图床还是自建对象存储,这一步我认为唯一不能省的,是转存完一定要导出一份“旧链接 → 新链接”的对照表。这张表就是后面所有操作的底气。

周日上午:替换时我差点踩了个大坑

有了对照表,我没有图省事去做“全局替换旧域名”。以前吃过亏:不同图床的目录结构、查询参数不一样,粗暴替换域名很容易误伤,甚至把 A 文章的图换成 B 文章的。

我改成拿完整的旧链接逐条精确替换,每替换一篇就记录命中了多少处。脚本跑完,绝大多数文章都正常命中,但有十几条显示“零命中”被单独列了出来。人工一查,果然是些边角料:有的 URL 末尾带了一串查询参数,有的文件名里有空格被编码成了 %20,还有中文文件名编码对不上。这些要是不一条条核对,就会变成漏网的裂图。

周日下午:验证、回滚,收工

动这些旧文之前,我先把整个文章目录用 git 提交了一次,等于留了个“后悔药”。替换完之后分三轮验证:

  1. 本地重新构建博客,重点抽查命中链接最多的几篇;
  2. 开无痕窗口看线上,避免浏览器缓存让我误以为修好了;
  3. 最后用手机连热点流量再翻一遍,换网络、换设备确认没有新裂图。

确认无误后,那张新旧链接对照表和最初的备份我都没删,原样留着——万一以后发现哪张图串了,还能整批回滚。

这次折腾后我定下的几条规矩

  • 图片不要和某个随时可能关停的免费域名绑死,图源本身要稳;
  • 迁移的核心从来不是“传图”,而是留好映射、保证能回滚;
  • 截图、配图的本地原件一定留着,别图一时清爽全删了;
  • 新图以后统一走一个固定图源,老文章定期抽几条链接巡检,别等读者来告诉你图裂了。

其实换框架、换电脑时我就跟博客图片打过一次交道,那篇讲的是资产目录怎么理顺:从 Hexo 折腾到 Hugo 又换了台电脑,我把博客图片这摊事理顺了;还有一种“裂图”更隐蔽,是 Notion 导出的 Markdown 里那种带签名、会过期的临时链接,过段时间才集体失效,踩过的可以看这篇:把 Notion 里几十篇笔记导出成 Markdown 后,我被图片链接上了一课。

希望你们永远用不上这套抢救流程,但最好提前知道它长什么样。

官网:https://imgbed.cn

posted @ 2026-10-11 21:07  234123412341234  阅读(10)  评论(0)    收藏  举报