WordPress 更换域名时会碰到的问题

Debug4年前 (2020)发布 Monster
140 0
内容纲要

因为各种原因,我们有时候需要更换 WordPress 的域名,而 WordPress 的域名是直接写入到数据库中的,直接更换服务器中 WordPress 站点绑定的域名显然是不行的,除了这个工作,我们还需要替换 WordPress 数据库中的旧域名为新域名,才算彻底完成 WordPress 的域名更换工作。

准备工作

数据库备份
数据库备份
数据库备份
重要的事情说三遍

使用wp-cli

使用 wp-cli 工具搜索替换域名的方式更换 WordPress 域名
wp-cli 是一个命令行工具,可以让我们通过命令行安装、更新 WordPress,对 WordPress 执行一些批量操作,使用起来相当方便。

  • 安装 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

    如果已经安装了 wp-cli 工具,直接进行下一步。

  • 搜索替换 WordPress 数据库中的域名
    wp-cli 工具为我们提供了一个搜索替换数据库中字符的命令,直接在 WordPress 的根目录执行以下命令即可完成更换 WordPress 域名的操作,该命令支持一些选项方便我们自定义操作,具体查看 wp search-replace 命令的官方说明

    wp search-replace 'http://www.old.com' 'http://www.new.com'

SQL 语句替换

UPDATE wp_options SET option_value = replace(option_value, 'http://www.old.com', 'http://www.new.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://www.old.com','http://www.new.com');

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.old.com', 'http://www.new.com');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.old.com','http://www.new.com');
UPDATE wp_usermeta SET meta_value = replace(meta_value, 'http://www.old.com', 'http://www.new.com');
UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://www.old.com', 'http://www.new.com');
UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://www.old.com','http://www.new.com');

意外情况

大多数情况下,写入 WordPress 中的域名都存在于上面几个数据表中,但是也不排除主题或插件添加的自定义数据表也包含旧域名,如果执行了上面的命令后,还有一些旧域名没有被替换掉,可以参考下面直接编辑 SQL 文件的方法进行替换。

  • 使用代码编辑器编辑 SQL 导出文件直接替换;
  • 导出 SQL 文件,然后使用你喜欢的代码编辑器打开导出的 SQL 文件,搜索替换旧域名为新域名;
  • 然后直接删除站点数据库中的所有数据表,再导入到数据库即可;

设置 301 跳转把旧域名的流量导入新域名

如果您的站点已经被搜索引擎收录了,可以在 Nginx 中做一个 301 跳转设置,把旧域名的流量导入到新域名。

server {
    listen 80;
    server_name http://www.old.com http://www.new.com;
    return 301 http://www.new.com$request_uri;
}

最后,再次提醒,修改 WordPress 数据库之前一定要做好备份,万一修改过程中出了问题,我们还可以很简单的把数据恢复过来,不至于造成太大的损失。

© 版权声明

相关文章

暂无评论

暂无评论...