一 数据库操作
进行手动SQL替换
-- 先备份数据库!!!
-- 1. 替换wp_options表中的基本设置
UPDATE wp_options SET option_value = 'https://新域名.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://新域名.com' WHERE option_name = 'home';
-- 2. 替换用户相关的URL
UPDATE wp_users SET user_url = REPLACE(user_url, '旧域名.com', '新域名.com');
-- 3. 替换文章内容
UPDATE wp_posts SET
post_content = REPLACE(post_content, '旧域名.com', '新域名.com'),
guid = REPLACE(guid, '旧域名.com', '新域名.com');
-- 4. 替换_postmeta(但要小心序列化数据)
UPDATE wp_postmeta SET
meta_value = REPLACE(meta_value, '旧域名.com', '新域名.com')
WHERE meta_key NOT IN ('_menu_item_classes', '_menu_item_type', '_menu_item_menu_item_parent');
-- 5. 替换其他可能包含域名的表
UPDATE wp_comments SET
comment_author_url = REPLACE(comment_author_url, '旧域名.com', '新域名.com');
UPDATE wp_links SET
link_url = REPLACE(link_url, '旧域名.com', '新域名.com'),
link_image = REPLACE(link_image, '旧域名.com', '新域名.com');特别注意的序列化数据
以下数据需要特殊处理,不建议直接SQL替换:
- 菜单数据 (
wp_postmeta中的_menu_item_*) - 小工具数据 (
wp_options中的widget_*) - 主题设置
- 插件设置
完整的检查清单
替换后检查这些地方:
-- 检查是否还有遗漏的旧域名
SELECT * FROM wp_options WHERE option_value LIKE '%旧域名%';
SELECT * FROM wp_posts WHERE post_content LIKE '%旧域名%' OR guid LIKE '%旧域名%';
SELECT * FROM wp_users WHERE user_url LIKE '%旧域名%';
SELECT * FROM wp_postmeta WHERE meta_value LIKE '%旧域名%';推荐的安全流程
- 完整备份数据库和文件
- 在测试环境先操作
- 使用插件进行替换(最安全)
- 替换后检查网站功能:
- 菜单是否正常
- 小工具是否正常
- 文章图片链接
- 用户资料链接
- 管理员后台功能
如果出现序列化数据损坏
如果替换后某些功能异常,可能需要:
- 重新保存菜单
- 重新配置小工具
- 重新保存主题设置
二 插件操作
- 安装 “Better Search Replace” 插件
- 在工具中选择所有表
- 搜索:
http://旧域名.com替换为:https://新域名.com - 搜索:
https://旧域名.com替换为:https://新域名.com - 勾选 “运行于序列化数据” – 这很重要!
