N Ways to Change Domain Name to New Domain Name for WordPress Migration Site
因为各种原因,我们有时候需要更换 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 wp_posts SET guid = replace(guid, 'http://old.com','http://www.newurl');
UPDATE wp_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 数据库之前一定要做好备份,万一修改过程中出了问题,我们还可以很简单的把数据恢复过来,不至于造成太大的损失。