把 WordPress 站点从一个服务器搬到另一个服务器,是网站运营中常遇到的需求,可能是为了升级配置,也可能是想更换更合适的主机服务商。整个迁移过程看似简单,但文件传输中断、数据库连接失败、页面样式丢失这些意外,往往就藏在细节里。下面这套流程能帮你把迁移风险降到最低。
动手之前,先把新服务器的情况摸清楚,能省去后面一大半的麻烦。你需要的核心数据有两份:网站全部文件和数据库导出文件。除此之外,以下几个信息也要提前确认好。
如果你的站点附件特别多,比如图片库动辄几个 GB,FTP 逐文件下载容易因为网络抖动造成遗漏。更稳妥的做法是请旧主机商帮你把根目录整个打包成 zip 或 tar.gz 压缩包,再一次性下载。
备份是所有操作的地基,务必做足。虽然备份插件很方便,但手动备份能让你清楚每一步在做什么,出问题时也更容易定位。
登录旧服务器的管理后台,打开 phpMyAdmin,选中你的 WordPress 数据库。点击顶部的“导出”选项卡,在导出方式里选择“自定义”,格式保持 SQL 不变。然后在“对象创建选项”那里,勾选“添加 DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER 语句”。这样做的好处是,导入到新库时能自动清掉已存在的同名表,避免冲突。最后点“执行”,把下载下来的 .sql 文件保存好。
用 FTP 工具连接旧服务器,进入网站根目录(常见的是 public_html 或 www 目录),把所有文件和文件夹选中并下载到本地。这一步容易漏掉隐藏文件,特别是 .htaccess 和 wp-config.php 这两个文件,少了它们站点多半会出问题。如果你用的是 FileZilla,记得在菜单里勾选“强制显示隐藏文件”。
避坑提醒:如果传输过程中一直报错,别硬撑。最常见的处理办法是暂停 FTP 下载,先联系主机商压缩整个目录,再用单文件下载代替逐文件下载,这样能大幅减少出错概率。
备份完成后,就开始在新环境里搭建。先登录新服务器的控制面板,进入 MySQL 数据库管理区域,为你的站点新建一个数据库和对应的用户,并把该用户的所有权限授予这个库。
打开新服务器的 phpMyAdmin,选中刚创建的空数据库,进入“导入”选项卡,上传之前备份的 .sql 文件。如果文件太大导致上传超时,可以通过 SSH 命令行使用 source 命令导入,效果一样。导入完成后,检查一下数据表是否完整,确认 wp_options 表里有内容。
将下载好的网站文件上传到新服务器的根目录。接着用文本编辑器打开 wp-config.php,把 DB_NAME、DB_USER、DB_PASSWORD 和 DB_HOST 四个参数改成新数据库的信息。注意 DB_HOST 不是 localhost 就不要照抄旧值,填主机商给的实际地址。
如果你的站点启用了 HTTPS 且把域名写死在数据库里,导入后页面可能打不开。这时可以手动登录 phpMyAdmin,执行一条 SQL 语句,把 wp_options 表中的 siteurl 和 home 字段改成新域名或新地址,再刷新前台看效果。
数据导入完成不代表大功告成,全面测试一遍才能真正放心。这一步的重点是确认前台、后台和资源加载都正常。
如果出现登录后跳回旧地址的情况,多半是数据库里还残留着旧的站点地址。在 phpMyAdmin 里执行下面这条语句并修改参数即可修正:将 wp_options 表中的 option_value 字段从旧地址替换为新地址。替换后记得清一下浏览器缓存再访问。
这个问题绝大多数情况出在 wp-config.php 文件的数据库信息填写错误。检查一下数据库名、用户名、密码是否与主机商提供的完全一致,注意大小写和特殊符号。另外,确认数据库主机地址是否为 localhost,如果不是,则需要改成主机商给定的地址。
样式丢失通常是固定链接或伪静态规则没有生效。登录后台后先去“设置-固定链接”,把结构选成原来的样子并保存一次。如果依然没恢复,检查 .htaccess 文件是否存在,以及内容是否包含了 WordPress 标准的 rewrite 规则。
这多半是文件权限没设置对。确保新服务器的上传目录(一般是 wp-content/uploads)及其子目录拥有可写的权限,常见配置为目录 755、文件 644。也有少数情况是磁盘配额满或者 PHP 上传大小限制过小,可以到主机控制面板里调整。
WordPress 网站搬家的核心思路就是“备份文件 + 备份数据库 → 上传还原 → 修配置 → 做测试”。提前确认新环境的 PHP 版本和数据库连接信息是节省时间的关键,手动备份比依赖插件更稳妥,最后的固定链接刷新和地址替换则是大多数问题的解药。建议在正式切换前,先在测试域名下完整跑一遍流程,确认无误后再指向正式域名,这样能把迁移风险降到可控范围。