WordPress 网站换域名教程:数据库 URL 替换、301 跳转与收录保护操作步骤及常见问题

一、适用场景与准备工作

网站换域名是运营过程中经常遇到的需求:品牌升级需要把 old.com 换成 new.com、公司改名、买了更好记的域名,或者早期随便注册了一个域名现在想换成主流后缀。无论哪种原因,换域名都不是"解析切一下"那么简单——WordPress 会把域名写入数据库,只改解析会出现后台打不开、图片全裂、样式丢失的问题。

本教程适用于使用 WordPress 搭建、通过 Nginx 或宝塔面板管理、拥有服务器管理员权限的站长。整个流程分四步:绑定新域名、替换数据库中的旧域名、配置 301 跳转、收尾检查。操作前请务必完成两项准备:一是完整备份,包括网站文件打包和数据库导出;二是确认新域名已经注册且未过期。数据库替换属于不可逆操作,备份是唯一的"后悔药",切勿跳过。

备份命令参考(在网站目录执行,路径和库名按实际情况修改):

tar -czf /www/backup/site-$(date +%F).tar.gz /www/wwwroot/old.com
mysqldump -u root -p wordpress > /www/backup/db-$(date +%F).sql

备份完成后,建议再把备份文件下载到本地一份,做到本地与服务器双保险,出现问题时可以立即回滚。

二、第一步:绑定新域名,确认可以正常访问

先把新域名解析到服务器。在域名 DNS 管理后台添加 A 记录,主机记录分别填 @ 和 www,记录值填服务器 IP,TTL 保持默认即可。解析生效通常需要几分钟到几小时,可以用 dig 命令验证是否已经指向服务器:

dig new.com +short

返回服务器 IP 说明解析已经生效。Windows 本地没有 dig 命令,可以用 nslookup 代替:

nslookup www.new.com

能正确返回服务器 IP 后,把新域名绑定到网站。宝塔面板用户进入"网站"页面,点击站点右侧的设置,在域名管理中追加新域名;直接使用 Nginx 的用户,在站点的 server 块中把新域名加入 server_name:

server {
    listen 80;
    server_name new.com www.new.com;
    ...
}

修改后执行 nginx -t 校验配置,通过后再 nginx -s reload 重载。此时用浏览器访问新域名,如果能打开网站(图片和链接还可能指向旧域名,属于正常现象),说明绑定成功。先不要修改 wp-config.php,等数据库替换完成后再统一清理。

三、第二步:批量替换数据库中的旧域名

这是换域名的核心步骤。WordPress 的站点地址、文章内容、附件路径都存放在数据库里,需要把旧域名全局替换为新域名。执行前再确认一次数据库备份可用,然后按自己的习惯从下面三种方式中任选一种。

方式一:phpMyAdmin 执行 SQL。进入 phpMyAdmin 选择网站数据库,在 SQL 窗口中逐条执行下面的语句(表前缀默认是 wp_,自定义前缀按实际修改,域名不要带结尾斜杠)。第一条替换站点地址,执行后后台地址立即变为新域名:

UPDATE wp_options SET option_value = REPLACE(option_value, 'https://old.com', 'https://new.com');

第二条替换文章和页面的正文内容:

UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://old.com', 'https://new.com');

第三条替换自定义字段中引用的图片或链接地址:

UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'https://old.com', 'https://new.com');

方式二:WP-CLI 命令行(推荐,能正确处理序列化数据)。在网站根目录执行,先加 --dry-run 预览影响范围,确认无误后去掉该参数正式执行:

wp search-replace 'https://old.com' 'https://new.com' --all-tables --dry-run
wp search-replace 'https://old.com' 'https://new.com' --all-tables

方式三:安装 Better Search Replace 插件,在后台工具中可视化操作。三种方式任选其一即可,不要重复执行,重复替换没有额外收益。

这里有一个重要提醒:WordPress 的小工具、主题设置等数据以 PHP 序列化格式存储,字符串长度是写进数据里的。直接跑 SQL 替换时,如果新旧域名长度不同,可能破坏序列化结构,导致小工具错乱甚至后台报错,WP-CLI 和专业插件会自动处理序列化,是更安全的选择。至于文章的 GUID 字段,一般保持原样即可,改动它可能影响 RSS 订阅器的文章去重。

WordPress 换域名数据库替换与配置操作场景
换域名前务必完成网站文件与数据库的双重备份,数据库替换操作不可逆

四、第三步:配置 301 跳转,保住收录与权重

新域名能正常访问后,接下来要把旧域名的收录和权重转移到新域名,核心手段是 301 永久跳转。搜索引擎只有看到 301 才会把旧地址的权重传递给新地址,这一步直接决定换域名后的流量损失大小。

直接使用 Nginx 的用户,为旧域名单独添加一个 server 块,可以放在站点配置文件中:

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

其中的 $request_uri 会保留旧域名后面的路径和参数,访问 old.com/abc 会跳转到 new.com/abc,页面级的对应关系不会丢失。如果旧域名还挂着 HTTPS,需要再补一个监听 443 的 server 块,同样跳转到新域名。改完执行 nginx -t 校验后再 reload。宝塔面板用户更简单:在网站页面使用重定向功能,把旧域名 301 到新域名即可,不需要手动改文件。

跳转配置完成后,顺手做两件收录保护的事:到百度搜索资源平台和 Google Search Console 添加新域名资源并提交新的 sitemap;百度平台的"网站改版"功能和 Google 的地址更改工具可以帮助加速权重转移,能填的信息都填上。

五、第四步:缓存、证书与收尾检查

主体操作完成后,还有一批收尾事项,漏掉任何一项都可能出现"换了一半"的怪问题,建议按顺序逐项核对。

第一,清理缓存。如果接了 CDN,刷新 CDN 缓存并确认回源正常;如果使用了 Redis 或页面缓存插件,清空缓存后再抽查几个页面。第二,申请证书。新域名需要单独申请 HTTPS 证书,宝塔面板可以一键申请 Let's Encrypt,命令行用户可以使用 certbot,证书部署后确认 HTTP 到 HTTPS 的跳转正常。第三,检查硬编码。部分主题、菜单、小工具里可能写死了旧域名,进入后台逐一检查外观-菜单、小工具和主题设置项。第四,更新外部地址。统计代码、支付回调、公众号或企业微信配置中的域名,全部更换为新域名。

最后是旧域名的处理:继续续费,至少保留 3 到 6 个月,301 跳转要一直保持有效。旧域名一旦过期,跳转就会断开,之前积累的收录传递也会前功尽弃。

六、常见问题与总结

问题一:替换数据库后后台打不开或网站报错怎么办?先用备份恢复,再检查是否误操作了序列化数据;也可以在 wp-config.php 中临时定义 WP_HOME 和 WP_SITEURL 为新域名,恢复后台访问后再仔细排查。

问题二:图片仍然显示旧域名或者出现裂图?先清除浏览器和 CDN 缓存再观察;仍有问题说明有漏替换的地址,重点检查 wp_postmeta 表和页面构建器生成的短代码,必要时补充执行一次替换。

问题三:换域名后收录和排名下降正常吗?短期内流量波动是正常现象,只要 301 跳转正确、新域名已在站长平台验证并提交 sitemap,通常几周内会逐步恢复,期间持续观察旧域名的抓取情况即可。

问题四:新旧域名可以同时访问吗?技术上可以,但不建议长期并行,收录和权重会被分散;过渡期结束后,旧域名只保留 301 跳转功能就好。

总结:换域名的完整流程是"先备份、绑新域名、替换数据库、做 301、清缓存、保旧域名"。只要按步骤执行、每一步都验证,再配合站长平台的地址变更提交,就能把流量损失控制在最小范围。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容