如何恢复博客封面图被防盗链的图片

发布于 2023-08-07  1.7k 次阅读


本文于 2023年10月6日 11:40 更新,注意查看最新内容

前言

博客内文章的图片和封面图挂了有一段时间了,前段时间折腾过一次,把文章内的图片恢复了,但因为封面图是使用插件导入的外链,以至于跟一般的图片挂了解决方式还不太一样,主要是当时没找到插件是以什么方式存储的链接,今天恢复另外一个站时,看到了类似的解决方案,于是再次折腾。

说实话,写博客这么久,每次遇到的问题稀奇古怪,解决的过程都极其繁琐,所以现在很多时候都不太愿意去动现有的一些东西,除非实在是非解决不可,比如这次……

解决

核心

本次驱使我再次折腾的很大一方面,是因为在恢复其他站访问的时候,找到了导入外链图片链接的字段:guid,不然估计还会停摆很久。

其实找到这个字段并不困难,主要是因为,个人很长一段时间没有写代码,以及本身对SQL就只会基本的增删改查,所以导致很多问题解决起来比较麻烦。

方法

UPDATE wp_posts SET guid = REPLACE( guid, '查找内容', '替换内容' )

演示

UPDATE wp_posts SET guid = REPLACE( guid, 'https://r.photo.store.qq.com/', 'https://images.weserv.nl/?url=https://r.photo.store.qq.com/' )

注意:操作之前必须备份数据库,并且下载至本地电脑。

插曲

操作完数据库之后,数据库里的数据已经被修改好了,我打开媒体库查看,却发现相关的链接并没有被修改。

这让我有些惊讶,因为同样的操作,另外一个网站的图片已经能够正常显示了,于是我开始排查问题。

首先我从媒体库插入了一条外链,查看数据库是否正常新增,结果是正常的,数据库增加了那条外链。

我再从数据库将外链的请求头去掉,但媒体库的链接却没有任何变化,这时我从媒体库将图片删除,此时数据库对应的链接也随之删除。

由此得知,媒体库对应的数据表以及字段没有问题,新增和删除也没有问题,只是修改的数据不更新。


我立马想到了缓存,因为博客最初创建时,使用的是虚拟主机,当时又卡又慢,所以做了很多优化。

我打开腾讯云看是不是使用了 CDN,结果是没有,再把博客运行的所有插件都停用,数据还是没有修改。

但直觉告诉我,问题应该出在水煮鱼的 WPJAM 插件上,然后我就打开搜索引擎进行搜索,结果确实找到了相关索引。

很早之前折腾过 WPJAM 中关于 Memcached 的功能,当时一方面考虑访问速度,另外一方面就是想在后台显示服务器的相关信息。

但不知道什么时候什么时候开始,这个功能消失,我也忘记了有这么一回事,直到今天才发现。

于是,尝试重启 Memcached,刷新媒体库,图片正常显示,完美解决。

后话

就像前言所说,其实很多时候都不太想去折腾博客,毕竟折腾一次,又要死不知道多少脑细胞,但毕竟问题摆在这了,兵来将挡,迎难而上便是,逃~。

参考

《了不起的 Markdown》

《MarkDown 字体颜色设置》

《WordPress 媒体数据保存在哪张表?》

 

*本文使用 Markdown 创作


这短短的一生,我们最终都会失去。