老话重提,但该踩的坑一个都跑不掉,上周刚帮一个客户从虚拟主机搬到云服务器,本来两小时能完事的事,愣是因为他之前手动改数据库密码时把wp-config.php里的DB_HOST写成了localhost,结果搬到新环境后数据库直接连不上,白折腾了一下午,今天我就把这次搬家过程里那些“你以为你会,其实会翻车”的细节全抖出来,照着做,能省你大半天时间,也省得被某些“专业搬家服务”收智商税。
第一步:别急着打包,先检查“三件套”
很多人搬家就是FTP把wp-content拖下来,再导出SQL,完事,但漏了三个东西:

WordPress搬家教程,别让服务器商坑你,三步搞定还省半年维护费
-
站点URL:如果你用WP CLI或者后台改过站点地址,数据库里的
siteurl和home可能不是域名而是带端口的内网地址,导出前先跑一句:SELECT option_value FROM wp_options WHERE option_name IN ('siteurl','home');看到不是你的正式域名?用
phpMyAdmin或WP CLI改回来,否则搬完后台直接打不开,白费劲。 -
.htaccess或Nginx规则:Apache的伪静态规则和Nginx的
rewrite不通用,如果你原来的环境是Apache,新服务器是Nginx,记得在Nginx配置里加上:location / { try_files $uri $uri/ /index.php?$args; }漏了这条,首页能开,内页全部404。
-
PHP版本:老虚拟主机还在跑PHP 5.6?你那些老插件在新服务器上可能直接白屏,搬家前用方案里的插件检测一下,省得上线当天被客户骂。
我的做法:直接用Duplicator插件,这个分分钟生成一个带安装器的“气泡包”,它能自动处理序列化数据、数据库前缀、甚至自动注入新的站点URL,新手别手动折腾,插件能规避80%的坑,但注意:Duplicator免费版就够了,别升级Pro,没必要。
如果你非要手动搬,那记住:压缩wp-content时排除cache和tmp目录,不然备份文件里一堆垃圾,上传慢一倍。
第二步:数据库导入时,最隐蔽的“编码坑”
导出的SQL文件,如果你用mysqldump,大概率是utf8mb4,但很多老虚拟机的数据库是utf8(不是mb4),导入新库时,如果新库默认排序规则是utf8mb4_unicode_ci,而你直接导入utf8的数据,大概率会出现“口口”乱码,更坑的是,做域名替换时,用SQL的REPLACE函数直接改wp_posts里的URL,会把serialized数组里长度值搞乱,比如设置里的某个JSON字符串长度没变,但内容变长,导致整个选项被截断。
解决方案:别用SQL直接替换,装一个Better Search Replace插件,它专门处理序列化数据,不管你的URL是出现在post_content里还是widget_blocks里,都能安全替换,操作前一定点“Dry Run”模拟一下,看它报告了多少个变化,如果发现它扫到了上千处,可能数据库里有历史残留,别慌,正常。
导入时还要注意:别用 source 命令一行行跑,尤其当你的SQL文件超过50MB,用命令行:
mysql -u用户名 -p 数据库名 < 你的备份.sql
如果没权限,用phpMyAdmin的上传导入,但记得调整max_execution_time和upload_max_filesize,不然导入到一半超时,数据残缺,后续排查到吐。
第三步:搬家后的“体检清单”——别急着删旧服务器
上线后第一件事不是庆祝,而是按这个顺序检查:
- 固定链接设置:去后台设置-固定链接,点一下“保存更改”,让新的伪静态规则生效。
- 图片路径:选一张老文章里的图片,右键看URL,如果是绝对路径指向旧域名,用Better Search Replace再跑一次(勾选
guid也要更新,虽然现在WP用wp_attachment_metadata,但改了更稳)。 - 邮件发送:新服务器大概率没配SMTP,装个WP Mail SMTP插件,用QQ邮箱或SendGrid都行,不然客户怎么收订单通知?
- 缓存插件:如果你原来用W3 Total Cache,搬家后直接卸载,改用WP Super Cache或LiteSpeed Cache,W3在PHP 8.2上经常报错,别给自己找麻烦。
长期维护建议:搬家不是终点,是分水岭
这次搬家如果你上了新服务器,那就顺手把环境调优到“不用再折腾”的状态:
- PHP选8.2或8.3,配Zend OPcache,内存给256M;数据库用MariaDB 10.11+,把
max_connections调到500,别信那些让你改my.cnf里几十个参数的教程,大部分是误导。 - 装个Redis对象缓存,插件配Redis Object Cache,如果你的主题和插件是“吃内存怪”,这能让你页面从800ms降到200ms,但注意:别用Redis存会话,PHP的session还是走文件,不然并发时锁死。
- 备份要“三二一”:本地一份,云存储一份,办公室硬盘一份,频率:每天自动备份数据库,每周备份全站,推荐用UpdraftPlus,免费版就够,备份到Google Drive或S3,配置一次忘掉它。
最后一个大坑:别在搬家过程中顺手更新WordPress版本或插件,老代码搭配新环境,变量名冲突、函数弃用,这些鬼问题会让你误判是搬家没搬好,先稳定跑一周,再逐个更新。
就说这么多,跟着这套流程走,你大概率能在两小时内完成搬家,而且不会出现“网站能打开但样式全没了”、“后台能进但前台500”这种鬼问题,如果你已经踩过坑了,欢迎评论区吐槽——反正我当年踩的坑比你还多,现在学乖了,全靠插件和清单。
发表评论