WordPress 更换 COS 加速域名的数据库修复指南

109次阅读
18 条评论

把 WordPress 的资源域名从 COS 默认地址换成 EO 加速域,真正麻烦的往往不是改插件,而是历史文章、媒体库和主题文件里已经留下的旧链接。本文整理一个初学者也能执行的修复顺序,重点是安全替换,而不是“全库一键改完”。

先找到旧链接在哪里,再按数据类型处理;数据库不是普通文本文件,不能只靠替换字符串。

一、旧 COS 链接通常藏在哪里

最常见的地方有三类:媒体库附件地址、文章和页面正文里的图片链接、主题或独立 PHP 文件里手写的音视频链接。

旧:https://bucket-appid.cos.ap-guangzhou.myqcloud.com/wp-content/uploads/a.jpg
新:https://cos.example.com/wp-content/uploads/a.jpg

先在 F12 Network 查看真实请求,再在 WordPress 媒体库、文章正文和服务器文件中搜索旧域名。这样可以确认问题是历史数据库链接,还是主题模板硬编码。

二、数据库替换前的三条红线

第一,完整备份数据库,并确认备份可以下载或恢复。第二,不修改 wp_posts.guid。GUID 更像文章的内部身份证,不是给前台访问者看的链接。第三,不要直接对 wp_options 做普通 SQL 替换。

数据库中的序列化数据就像带长度标记的快递单,直接替换地址长度后,标记可能对不上,插件设置就会损坏。

但这里有一个前提:若你明确知道某张表没有序列化数据,且已在测试库验证,SQL 仍可用于非常小范围的替换。

三、优先使用安全的搜索替换工具

初学者建议使用 Better Search Replace 一类插件。它能识别序列化数据,先进行 Dry Run(试运行),统计命中数量而不写入数据库。

查找:https://旧COS默认域名
替换:https://cos.example.com
先勾选:Dry Run
确认数量无误后:取消 Dry Run 再执行

推荐顺序是:先只扫描 wp_posts,确认文章内容命中;再扫描 wp_postmeta;最后根据插件说明决定是否扫描其他表。每一步记录替换数量,发现异常可以立即停止。

四、什么时候可以用 SQL

SQL 适合可控、范围明确的内容替换,例如只改文章正文。下面示例不涉及 GUID、附件元数据和 options:

UPDATE wp_posts
SET post_content = REPLACE(post_content,
  'https://旧COS默认域名', 'https://cos.example.com')
WHERE post_content LIKE '%旧COS默认域名%';

执行前先把同一条件改成 SELECT ID, post_title 查看命中记录。表前缀不一定是 wp_,必须以真实数据库为准。

五、别漏掉硬编码的静态文件

有些首页播放器、横幅视频并不来自媒体库,而是写在主题模板、子主题或独立 PHP 文件中。数据库替换不会触及这些文件,所以页面仍可能请求旧 COS 域名。

在服务器站点目录搜索旧域名,定位后只替换域名前缀,保留原来的文件路径和 URL 编码。改完清理页面缓存,再用无痕窗口验证。

六、最终验证清单

依次查看:首页图片、文章图片、音频或视频、媒体库新上传文件。F12 中不应再出现 myqcloud.com 默认域名;加速域名应返回 200,并显示 EO/CDN 缓存相关响应头。

若加速域返回 403,先检查 EO 到 COS 的私有授权回源,不要为了临时恢复图片把桶重新设为公有读。否则旧直连地址会重新暴露,流量控制也失去意义。

写在最后

链接修复的核心不是批量替换本身,而是让 WordPress、历史内容和主题代码最终指向同一个加速入口。

如果你接下来要迁移资源域名,先执行一次只读搜索或 Dry Run,列出命中范围,再动任何写入操作。你能否清楚区分自己站点里的“数据库链接”和“模板硬编码链接”?


正文完
 0
评论(18 条评论)