因为各种原因,我们有时候需要更换 WordPress 的域名,而 WordPress 的域名是直接写入到数据库中的,直接更换服务器中 WordPress 站点绑定的域名显然是不行的,除了这个工作,我们还需要替换 WordPress 数据库中的旧域名为新域名,才算彻底完成 WordPress 的域名更换工作。本文中,我将为大家介绍几种更换 WordPress 域名的方式。需要事先提醒大家的是,修改 WordPress 数据库之前,一定要做好备份,以防万一。
如果你需要的不是更换域名,而是在一个 WordPress 站点中绑定多个域名,请参考本站的另外一篇文章:WordPress 绑定多个域名的方法。
使用 wp-cli 工具搜索替换域名的方式更换 WordPress 域名
wp-cli 是一个命令行工具,可以让我们通过命令行安装、更新 WordPress,对 WordPress 执行一些批量操作,使用起来相当方便。
安装 wp-cli 工具
如果已经安装了 wp-cli 工具,直接进行下一步。
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
搜索替换 WordPress 数据库中的域名
wp-cli 工具为我们提供了一个搜索替换数据库中字符的命令,直接在 WordPress 的根目录执行以下命令即可完成更换 WordPress 域名的操作,该命令支持一些选项方便我们自定义操作,具体查看 wp search-replace 命令的官方说明。
wp search-replace 'old.com' 'new.com'
使用 SQL 语句直接在数据库中替换域名
在 phpMyAdmin 中直接运行下面的命令替换旧域名为新域名即可。复制代码后,替换代码中 old.com, new.com, 如果您的 WordPress 站点使用了自定义数据表前缀,同时修改下面命令中的 ‘wp_’ 数据表前缀。
UPDATE wp_options SET option_value = replace(option_value, 'http://old.com', 'http://new.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE sijp2RHo_posts SET guid = replace(guid, 'http://old.com','http://www.newurl');
UPDATE sijp2RHo_posts SET post_content = replace(post_content, 'http://old.com', 'http://new.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://old.com','http://new.com');
UPDATE wp_usermeta SET meta_value = replace(meta_value, 'http://old.com', 'http://new.com');
UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://old.com', 'http://new.com');
UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://old.com','http://new.com');
大多数情况下,写入 WordPress 中的域名都存在于上面几个数据表中,但是也不排除主题或插件添加的自定义数据表也包含旧域名,如果执行了上面的命令后,还有一些旧域名没有被替换掉,可以参考下面直接编辑 .sql 文件的方法进行替换。
使用代码编辑器编辑 .sql 导出文件直接替换
导出 .sql 文件,然后使用你喜欢的代码编辑器打开导出的 .sql 文件,搜索替换旧域名为新域名。
然后直接删除站点数据库中的所有数据表,再导入到数据库即可。
设置 301 跳转把旧域名的流量导入新域名
如果您的站点已经被搜索引擎收录了,可以在 Nginx 中做一个 301 跳转设置,把旧域名的流量导入到新域名。
server {
listen 80;
server_name old.com new.com;
return 301 http://new.com$request_uri;
}
最后,再次提醒,修改 WordPress 数据库之前一定要做好备份,万一修改过程中出了问题,我们还可以很简单的把数据恢复过来,不至于造成太大的损失。