把WordPress站点从一台服务器搬到另一台,本质上就是把所有程序文件和数据库内容完整迁移到新环境,同时保证各项配置与新主机兼容。整个过程不依赖复杂的代码能力,但任何一个隐藏文件被漏掉,或数据库连接信息填错,都可能让网站立刻打不开。下面按照实际操作流程,把迁移的完整步骤和那些容易被忽视的细节梳理清楚。
在开始打包任何数据之前,先确认新服务器能够承载现有网站的运行需求。这一步看似没有实际搬运动作,却能避免后续大量的返工和调试。
虽然市面上有很多备份插件,但手动操作能让你清晰掌握每一个文件的存放位置和数据库的表结构,日后排查故障也更得心应手。网站文件和数据库需要分开备份,两者缺一不可。
登录旧主机的phpMyAdmin,选中需要迁移的WordPress数据库,点击顶部的“导出”标签页。导出方式选择“自定义”,格式保持默认的SQL。在页面下方的“对象创建选项”区域,务必勾选“添加DROP TABLE / VIEW / PROCEDURE / FUNCTION / TRIGGER语句”这一项。勾选它的意义在于:如果新数据库里恰好存在同名的数据表,导入时系统会先删除旧表再创建新表,从而避免因表结构重复而导致导入中断。设置完成后点击执行,系统会将数据库打包成一个SQL文件供下载保存。
打开FTP软件连接旧服务器,定位到网站根目录,通常命名为public_html、www或者是你自己设置的专属目录名。选中根目录下的所有文件和文件夹,包括那些以点号开头的隐藏文件,然后整体下载到本地电脑。在FileZilla中,可以通过顶部菜单“服务器”->“强制显示隐藏文件”来确保.htaccess和wp-config.php这类关键文件不会被遗漏。如果下载过程中频繁出现传输失败,并且反复重试都没有效果,这时候不要一直纠结单个文件的重试,应该立刻停止操作,转而去申请主机商协助打包下载,以免因文件不完整导致恢复后的网站出现各种诡异问题。
避坑提示:数据库导出时如果漏掉了DROP语句,而新空间里又恰好残留了同名的数据表,导入过程很可能因为结构冲突而直接报错。另外,wp-config.php中如果数据库主机地址还停留在旧环境的配置值,网站访问时大概率会出现“建立数据库连接时出错”的提示,这一点必须重点核对。
在新主机的控制面板中,先创建一个空数据库和一个专用的数据库用户,并为该用户赋予这个数据库的全部操作权限,包括增删改查和结构修改。权限不足会导致后续导入时提示无权限创建表。
进入新主机的phpMyAdmin,选中刚建好的空数据库,点击“导入”按钮,选择之前下载的SQL文件,点击执行。如果文件体积较大,导入过程可能会超时或中断。此时可以检查phpMyAdmin的导入大小限制设置,或者通过后台Shell命令行执行类似mysql -u用户名 -p密码 数据库名 < 文件.sql的命令来完成导入。导入完成后,在左侧表列表中应该能看到wp_posts、wp_options等熟悉的数据表。
使用文本编辑器打开本地的wp-config.php文件,找到DB_NAME、DB_USER、DB_PASSWORD和DB_HOST这几行,分别替换为新数据库的名称、用户名、密码和数据库主机地址。保存后,将这整个文件连同之前下载的所有网站文件一起,上传到新服务器的网站根目录。覆盖上传时,注意保留原有目录结构,不要漏掉wp-content文件夹下的所有子目录。
如果是域名服务器没有改变,只是换了主机空间,通常在修改DNS解析后即可生效。如果新旧服务器在同一环境下,可能还需要检查wp_options表中的siteurl和home字段,确保它们的值仍然是你的正确域名。如果迁移后访问网页出现样式错乱,多数情况下是因为浏览器缓存或者CDN缓存未更新,清理缓存再刷新即可解决。
先检查wp-config.php中的DB_HOST是否填写正确,很多云数据库的主机地址并不是localhost。其次确认数据库用户账号密码完全匹配,并且该用户对新数据库拥有全部权限。还可以查看新服务器的数据库服务是否已经启动,以及端口是否允许外部连接。
可以尝试使用压缩包传输方案:先在旧服务器上请求主机商帮忙将根目录打包成ZIP文件,然后下载这个压缩包到本地,再上传到新服务器,最后在面板的文件管理器中解压。或者尝试切换FTP连接模式为被动模式,有时候也能减少中断概率,但最稳妥的还是压缩包搬家。
这种情况通常是固定链接结构导致的问题。登录新网站的后台,进入“设置”->“固定链接”,不要做任何修改,直接点击底部的“保存更改”按钮,让系统刷新一次重写规则。如果还是不行,检查根目录的.htaccess文件是否上传成功,以及服务器Apache的mod_rewrite模块是否开启。
WordPress迁服务器并不神秘,核心要点就是文件全、数据库准、配置对。动手之前先梳理新环境的PHP版本和数据库连接参数,备份时别漏掉隐藏文件,导入时留意DROP语句,最后及时修改wp-config.php并检查伪静态规则。建议在正式切换域名解析之前,先通过修改本地hosts文件的方式指向新服务器,完整测试一遍功能再对外生效,这样可以把风险控制在最低。