前言介绍
WordPress 网站搬家(迁移服务器)是站长们迟早会面对的操作,无论是从虚拟主机升级到云服务器,还是更换更稳定的服务商。很多人觉得搬家很复杂,担心数据丢失或网站打不开。实际上,只要按照正确的流程操作,搬家并不难。本教程将带你从零开始,完整迁移一个WordPress网站到新服务器,包括文件、数据库、域名解析等所有环节,确保搬家后网站正常运行,不丢一篇文章、不丢一张图片。
前置准备
在开始操作前,请准备好以下材料和工具:
1. **新服务器环境**:确保新服务器已安装好 PHP(推荐 7.4 或 8.0+)、MySQL/MariaDB、Apache 或 Nginx。如果不确定,联系服务器提供商确认环境是否支持 WordPress。
2. **FTP/SFTP 客户端**:推荐使用 FileZilla(免费、稳定),用于上传下载网站文件。
3. **数据库管理工具**:推荐 phpMyAdmin(通常服务器面板自带),或使用 Navicat、DBeaver 等客户端工具。
4. **文本编辑器**:推荐 Notepad++ 或 VS Code,用于修改配置文件。
5. **旧服务器信息**:包括旧服务器的 FTP 账号密码、数据库账号密码、WordPress 管理员后台账号密码。
6. **新服务器信息**:新服务器的 IP 地址、FTP 账号密码、数据库主机地址(通常是 localhost)、数据库名、数据库用户名和密码。
7. **域名管理权限**:能够登录域名注册商或 DNS 管理面板,修改域名解析记录。
---
分步操作步骤
**步骤 1:备份旧服务器上的所有文件**
这是搬家最基础的一步,目的是把网站的所有代码、主题、插件、上传的图片等全部打包带走。
1. 打开 FileZilla,在“主机”栏输入旧服务器的 IP 或域名,“用户名”和“密码”输入旧服务器的 FTP 账号,端口默认 21,点击“快速连接”。
2. 连接成功后,右侧窗口显示的是旧服务器的文件目录。找到网站根目录,通常是 `public_html`、`www` 或 `htdocs` 文件夹。如果不确定,可以查看旧服务器控制面板的“文件管理器”或咨询服务商。
3. 在左侧窗口(本地电脑)创建一个新文件夹,命名为 `wordpress-backup`,用于存放备份文件。
4. 在右侧窗口选中整个网站根目录(右键 -> 选择所有文件),然后右键点击任意选中文件,选择“下载”。FileZilla 会自动将全部文件下载到左侧的 `wordpress-backup` 文件夹中。
5. 等待下载完成。如果网站文件较大(比如有很多图片或视频),下载可能需要几分钟到几十分钟。确保左下角传输队列显示“传输成功”且无报错。
**步骤 2:备份旧服务器的数据库**
WordPress 的所有文章、页面、评论、用户信息、插件设置等数据都存储在数据库中,必须单独备份。
1. 登录旧服务器的控制面板(如 cPanel、Plesk 或宝塔面板),找到“phpMyAdmin”图标并点击进入。如果没有面板,可以直接通过浏览器访问 `http://旧服务器IP/phpmyadmin`,用数据库账号登录。
2. 在 phpMyAdmin 左侧列表中找到你的 WordPress 数据库(名称通常类似 `wp_` 或 `wordpress_` 开头),点击选中它。
3. 点击顶部菜单栏的“导出”选项卡。
4. 导出方法选择“快速”,格式选择“SQL”,然后点击右下角的“执行”按钮。系统会自动下载一个 `.sql` 文件,把它保存到刚才的 `wordpress-backup` 文件夹中。
**步骤 3:在新服务器上创建数据库和用户**
新服务器需要有一个空的数据库来接收旧数据。
1. 登录新服务器的控制面板或 phpMyAdmin。如果你用的是云服务器(如阿里云、腾讯云),通常需要通过 SSH 连接后使用命令行创建,或者使用服务器面板(如宝塔面板)的“数据库”功能。
2. 以宝塔面板为例:进入“数据库”菜单,点击“添加数据库”。输入数据库名(例如 `new_wp`),设置一个复杂的用户名和密码(建议包含大小写字母、数字和特殊符号),字符集选择 `utf8mb4`,然后点击“提交”。
3. 记录下新数据库的名称、用户名和密码,后面会用到。如果你没有面板,使用 phpMyAdmin 的话,可以在“用户账户”中创建新用户并赋予所有权限。
**步骤 4:修改 WordPress 配置文件中的数据库连接信息**
旧网站的配置文件里写的是旧数据库的信息,需要改成新数据库的。
1. 在本地电脑上,进入 `wordpress-backup` 文件夹,找到 `wp-config.php` 文件,用记事本或 Notepad++ 打开。
2. 找到以下几行代码(通常在文件开头部分):
```
define('DB_NAME', '旧数据库名');
define('DB_USER', '旧数据库用户名');
define('DB_PASSWORD', '旧数据库密码');
define('DB_HOST', 'localhost'); // 通常是 localhost,也可能是一个 IP
```
3. 将这三行内容修改为步骤 3 中创建的新数据库信息:
```
define('DB_NAME', 'new_wp');
define('DB_USER', '新用户名');
define('DB_PASSWORD', '新密码');
define('DB_HOST', 'localhost'); // 除非你数据库服务器是独立的,否则保持 localhost
```
4. 保存并关闭 `wp-config.php` 文件。注意:不要修改其他任何内容,尤其是 `$table_prefix` 行,除非你知道自己在做什么。
**步骤 5:将备份的文件上传到新服务器**
现在把修改过配置的网站文件搬到新服务器上。
1. 打开 FileZilla,连接到新服务器(输入新服务器的 IP、FTP 账号和密码)。
2. 在右侧窗口(新服务器)找到网站根目录(通常是 `/www/wwwroot/你的域名` 或 `/var/www/html`)。如果是新服务器,这个目录可能是空的。
3. 在左侧窗口(本地电脑)进入 `wordpress-backup` 文件夹,选中所有文件和文件夹(Ctrl+A),然后右键点击,选择“上传”。
4. 等待上传完成。同样,文件较多时可能需要一些时间。确保传输队列无报错。
**步骤 6:将旧数据库导入新服务器**
把备份的 SQL 文件导入到新数据库中。
1. 登录新服务器的 phpMyAdmin,在左侧列表中选择你刚创建的新数据库(例如 `new_wp`),确保它是空的(没有表)。
2. 点击顶部菜单栏的“导入”选项卡。
3. 点击“选择文件”按钮,找到步骤 2 中下载的 `.sql` 文件。
4. 格式保持默认的“SQL”,其他选项默认,然后点击右下角的“执行”按钮。
5. 等待导入完成。如果文件较大,可能需要几分钟。导入成功后,页面会显示“导入成功”,左侧列表会出现很多以 `wp_` 开头的表。
**步骤 7:更新域名解析指向新服务器**
这是搬家最后一步,让用户访问域名时来到新服务器。
1. 登录你的域名注册商网站(如阿里云、腾讯云、GoDaddy 等),进入域名管理控制台。
2. 找到“DNS 解析”或“域名解析”设置。
3. 找到当前指向旧服务器 IP 的 A 记录(主机记录通常是 `@` 或 `www`),点击“修改”或“更改”。
4. 将记录值修改为新服务器的 IP 地址。注意:如果旧服务器上还有邮件服务,MX 记录不要动。
5. 保存设置。DNS 解析生效需要时间,通常在 10 分钟到 24 小时之间,全球生效一般需要 1-2 小时。
**步骤 8:测试网站是否正常运行**
这一步是为了确认搬家成功,及时发现问题。
1. 等待解析生效后,在浏览器中输入你的域名(例如 `www.yourdomain.com`),查看网站首页是否能正常打开。
2. 尝试访问一篇文章,检查图片、链接、样式是否正常。
3. 登录 WordPress 后台(域名/wp-admin),用旧的管理员账号密码登录,检查插件、主题、用户等设置是否完整。
4. 如果网站出现 404 错误,进入后台“设置”->“固定链接”,直接点击“保存更改”按钮,无需修改任何选项,WordPress 会自动刷新重写规则。
---
常见问题
**问题 1:搬家后网站显示“数据库连接错误”**
原因:`wp-config.php` 中的数据库信息填写错误,或者新数据库的用户名密码不对。
解决方法:重新检查 `wp-config.php` 中的 DB_NAME、DB_USER、DB_PASSWORD 是否与步骤 3 创建的一致。注意大小写和特殊字符。也可以在 phpMyAdmin 中测试用这些信息能否登录数据库。
**问题 2:搬家后网站页面空白(白屏)**
原因:PHP 版本不兼容,或某个插件/主题文件损坏。
解决方法:首先检查新服务器的 PHP 版本是否与旧服务器一致(至少 PHP 7.4)。如果版本不同,尝试在服务器面板中切换 PHP 版本。如果还是白屏,通过 FTP 进入 `wp-content/plugins` 文件夹,将所有插件文件夹重命名(例如加个 `_old` 后缀),然后刷新网站,如果能正常显示,说明是某个插件问题,再逐个恢复插件排查。
**问题 3:搬家后图片无法显示(图片链接还是旧域名)**
原因:WordPress 数据库中存储了旧域名的图片链接。
解决方法:使用插件(如 Velvet Blues Update URLs)或手动在 phpMyAdmin 中执行 SQL 语句,将旧域名替换为新域名。
SQL 语句示例(在 phpMyAdmin 的 SQL 窗口中执行):
```
UPDATE wp_posts SET post_content = REPLACE(post_content, '旧域名.com', '新域名.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '旧域名.com', '新域名.com');
UPDATE wp_options SET option_value = REPLACE(option_value, '旧域名.com', '新域名.com') WHERE option_name = 'siteurl' OR option_name = 'home';
```
注意:将 `wp_` 替换为你数据库中的表前缀(在 `wp-config.php` 中查看 `$table_prefix`)。
**问题 4:DNS 解析生效后,旧服务器上的网站还能访问**
原因:DNS 缓存未刷新,或者你的本地网络有缓存。
解决方法:清除本地浏览器缓存和系统 DNS 缓存(Windows 在 cmd 中运行 `ipconfig /flushdns`)。如果还不行,可以等待 24 小时,或者使用手机 4G 网络访问测试。
**问题 5:搬家后网站后台无法登录(提示密码错误)**
原因:数据库中的用户密码加密方式与新服务器 PHP 版本不兼容,或者密码被修改。
解决方法:通过 phpMyAdmin 进入新数据库的 `wp_users` 表,找到你的管理员用户,修改 `user_pass` 字段的值为 `$P$Bhasdfghjkl123456`(这是 WordPress 加密格式,实际需要生成一个正确的哈希值)。更简单的方法是:在数据库的 `wp_users` 表中,将 `user_pass` 字段直接替换为一个已知的 MD5 加密值(例如 `5f4dcc3b5aa765d61d8327deb882cf99`,对应明文密码 `password`),然后尝试用 `password` 登录,登录成功后立即修改密码。
---
收尾总结
WordPress 网站搬家本质上就是“文件迁移 + 数据库迁移 + 域名指向更新”这三个核心动作。只要按照本教程的步骤,先备份旧文件、导出旧数据库,再在新服务器上创建新数据库、修改配置文件、上传文件、导入数据库,最后更新域名解析,整个过程并不复杂。关键点在于:**确保 `wp-config.php` 中的数据库信息与新数据库一致**,以及**搬家后及时检查图片链接和固定链接**。如果遇到问题,不要慌张,根据常见问题的解决方法逐一排查即可。搬家完成后,建议保留旧服务器至少 3-7 天,确认新服务器稳定运行后再关闭旧服务器,以防万一。