媒体库里的"重复"至少混着三种东西:同名不同内容的二次上传、同一张图被反复替换后的历史版本、以及一次上传自动派生出的多档尺寸。前两种该清,第三种是 WordPress 的正常工作结果,删了页面就花。清理之前真正要解决的不是"删哪条",而是"这张图在站外被引用过没有"。这一篇讲的是媒体库层面的管理与判断——判断依据是记录本身,不是"关掉之后会怎样"那一层。

先把三类混进来的东西拆开
第一类最容易认:文件名一样、字节数也一样,多半是同一张图被上传了两次,媒体库里留下两条独立记录。这类删掉风险最低。第二类是替换留下的历史版本——后台上传新图时选"覆盖"或直接改了同一篇文章的配图,旧文件常常还在磁盘上,靠文件名很难看出关系,只能靠尺寸、体积和拍摄时间对照。第三类是派生尺寸,同一条记录下面挂着原图加若干缩略,它们看起来也像重复,但它们是同一条记录的一部分。
为什么这个区分必须先做:WordPress 的 Common APIs Handbook把媒体列为核心 API 之一,同一件事(读媒体、写媒体、生成尺寸)在核心里走的是同一套约定。也就是说,从接口角度看,第一类和第二类是两条独立记录,第三类根本不是独立记录——所以它们的处理方式不可能一样。
清之前必须核对的三件事
- 查引用。把待删文件的实际地址粘到搜索操作符里做一次粗查,同时翻服务器访问日志看最近三个月有没有请求打到这个地址。粗查只当线索用,日志更接近事实。
- 查正文。站内文章里引用图片的位置,最快的办法是在数据库里按文件名搜,而不是靠后台逐篇点开。
- 查备份。确认当前备份能覆盖到 uploads 目录,并且做过一次实际还原演练——没验证过的备份不算备份,这一项在WordPress 托管买的不只是服务器:怎样验收异地备份、安全运维与迁移支持里已经展开说过。
三件事里有任何一件没查清,就先别删。删除本身容易,难的是删完之后没人知道少了什么。
为什么"同一张图只用一个地址"值得专门做
搜索侧的表述很具体。Google 关于图片 SEO 的说明里有一句:如果同一张图在站内多个页面被引用,应当一致地用同一个地址引用,这样 Google 才能缓存并复用该图片,不必多次请求它。同页还提到图像站点地图的 image:loc 可以填其他域名的地址,也就是图片放在 CDN 上时也能被声明。
这句话反过来读更有用:同一个画面存在两份文件,就会产生两个可被抓取的地址。而多地址问题,Google 有一份专门的文档在讲合并方法。Google 关于指定规范 URL 的说明按影响力从强到弱排了三种方法:重定向是强信号,rel="canonical" 链接标注是强信号,站点地图收录是弱信号;同一页还明确写了不要用 noindex 去阻止一个规范页面被选中,站内挑选规范版本应该用 rel="canonical"。所以先合并地址、再谈删文件,顺序反了就会出现"文件已经删了,但地址还在原地被引用"的情况。
这几类"重复"不要动
一是文章特色图和缩略图这类被角色绑定的记录,删了会让引用它的版式直接空掉。二是已经被外部站点直接引到文件地址的图片,尤其是别人拿去做外链的那种,地址一变对方的图就挂,这是站内其他改动碰不到的损失。三是走独立域名或内容分发网络的站点,媒体库记录和实际分发文件可能不是同一份,本地列表里看着重复,实际各有用处,动手前先在WordPress 托管报价怎么看:主机、异地备份、迁移与运维各算什么里那套验收口径下确认一遍。附件地址本身的检查方法可以参考WordPress 附件页关了图片会消失吗:两种 URL 要分开检查。
怎么确认清理没把图弄丢
按三段核对:清完之后随机抽五篇文章,逐张打开图片确认能正常加载,地址栏和源码里都没有 404;再打开媒体库里被删记录曾经挂在的那条,看它的引用关系是不是空了;最后看服务器的访问日志和错误日志,确认清理后没有新增的图片请求失败。如果站点本来就在迁移窗口里,这些核对要排到迁移之后再做一次,别在搬迁前清历史文件。迁移期媒体要一起搬、备份要单独验收,这两件事的具体口径在前面那篇托管报价里已经拆开说过。