手动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 '%旧域名%';
推荐的安全流程
完整备份数据库和文件
在测试环境先操作
使用插件进行替换(最安全)
替换后检查网站功能:
菜单是否正常
小工具是否正常
文章图片链接
用户资料链接
管理员后台功能
如果出现序列化数据损坏
如果替换后某些功能异常,可能需要:
重新保存菜单
重新配置小工具
重新保存主题设置
强烈建议使用插件方法,因为它能正确处理WordPress的序列化数据,避免数据损坏。
安装 “Better Search Replace” 插件
在工具中选择所有表
搜索:
http://旧域名.com替换为:https://新域名.com搜索:
https://旧域名.com替换为:https://新域名.com勾选 “运行于序列化数据” – 这很重要!
我用的是数据库,还没用过插件,如果有兄弟知道这个插件怎么用,可以教教我。
