你要的是只改附件(uploads)资源域名的 SQL,对吧。
这里给你一套“最安全、最精准”的版本。
1. 只改文章里的图片(post_content)
UPDATE wp_posts
SET post_content = REPLACE(
post_content,
'http://old.com/wp-content/uploads/',
'http://new.com/wp-content/uploads/'
);
如果你是 HTTPS:
UPDATE wp_posts
SET post_content = REPLACE(
post_content,
'https://old.com/wp-content/uploads/',
'https://new.com/wp-content/uploads/'
);
2. 修改附件 GUID(建议只改 uploads)
UPDATE wp_posts
SET guid = REPLACE(
guid,
'http://old.com/wp-content/uploads/',
'http://new.com/wp-content/uploads/'
)
WHERE post_type = 'attachment';
3. 如果你想更稳(推荐这个)
避免误伤其他 URL,只改 uploads:
UPDATE wp_posts
SET guid = REPLACE(
guid,
'old.com/wp-content/uploads/',
'new.com/wp-content/uploads/'
)
WHERE post_type = 'attachment';
4. 如果还有“缩略图 / 插件存储路径”
(可选,但很多站需要)
UPDATE wp_postmeta
SET meta_value = REPLACE(
meta_value,
'old.com/wp-content/uploads/',
'new.com/wp-content/uploads/'
);
5. 最推荐执行顺序(重要)
① wp_posts.post_content
② wp_posts.guid (只 attachment)
③ wp_postmeta(如果确认有旧域名)
6. 你这种迁移场景的关键点
你现在的情况其实是:
图片文件已经在服务器
只是数据库域名没统一
所以不需要动 uploads 文件夹,只修数据库即可。
7. 一句话总结
只做这两个核心 SQL 就够了:
UPDATE wp_posts
SET post_content = REPLACE(post_content,'old.com/wp-content/uploads/','new.com/wp-content/uploads/');
UPDATE wp_posts
SET guid = REPLACE(guid,'old.com/wp-content/uploads/','new.com/wp-content/uploads/')
WHERE post_type='attachment';