外贸独立站

网站域名变更的数据库操作

目的是变更域名的时候,有一个解决的方案

手动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 '%旧域名%';
				
			

推荐的安全流程

  1. 完整备份数据库和文件

  2. 在测试环境先操作

  3. 使用插件进行替换(最安全)

  4. 替换后检查网站功能:

    • 菜单是否正常

    • 小工具是否正常

    • 文章图片链接

    • 用户资料链接

    • 管理员后台功能

如果出现序列化数据损坏

如果替换后某些功能异常,可能需要:

  1. 重新保存菜单

  2. 重新配置小工具

  3. 重新保存主题设置

强烈建议使用插件方法,因为它能正确处理WordPress的序列化数据,避免数据损坏。

  1. 安装 “Better Search Replace” 插件

  2. 在工具中选择所有表

  3. 搜索:http://旧域名.com 替换为:https://新域名.com

  4. 搜索:https://旧域名.com 替换为:https://新域名.com

  5. 勾选 “运行于序列化数据” – 这很重要!

我用的是数据库,还没用过插件,如果有兄弟知道这个插件怎么用,可以教教我。