WordPress 手动搬迁指南 + 换域名(宝塔 / 无宝塔通用)
完整的 WordPress 网站手动迁移教程,涵盖文件打包、数据库导入、伪静态配置和域名替换,适用于任何 Linux 服务器环境。
⚠️ 重要提醒:操作前请务必完整备份网站文件和数据库!搬迁过程中任何一步出错,都可能导致数据丢失。备份是你的唯一后悔药。
适用场景
- 换服务器(比如从阿里云搬到腾讯云)
- 换域名
- HTTP 升级到 HTTPS
- 以上任意组合
整个流程分四步:打包文件 → 导出数据库 → 导入新服务器 → 配置伪静态。如果要换域名,最后多一步 SQL 替换。
第一步:打包网站文件
把网站根目录下的所有文件打包压缩。

宝塔面板可以直接在文件管理器里右键压缩;没宝塔的话用命令行:
cd /www/wwwroot/your-site.com
tar -czf site-backup.tar.gz .打包完成后下载到本地备份。
第二步:导出数据库
用 phpMyAdmin 导出数据库(如果没装可以通过宝塔一键安装,或者用命令行)。

phpMyAdmin 方式: 登录后选中你的数据库 → 点击「导出」→ 选择「快速」→ 格式选 SQL → 点击「执行」。
命令行方式:
mysqldump -u 用户名 -p 数据库名 > backup.sql第三步:导入到新服务器
3.1 创建新数据库
在新服务器上创建数据库。注意:新数据库的名字最好和旧的一样,否则导入时会报错。
如果新数据库名字必须不同,需要手动编辑导出的 SQL 文件,把里面的旧数据库名替换成新的:

-- 把文件开头的这行改掉
USE `旧数据库名`;
-- 改为
USE `新数据库名`;3.2 导入数据库

phpMyAdmin 方式: 选中新数据库 → 点击「导入」→ 选择 SQL 文件 → 执行。
命令行方式:
mysql -u 用户名 -p 新数据库名 < backup.sql3.3 上传并解压网站文件
把打包的文件上传到新服务器的网站根目录下,解压:
cd /www/wwwroot/your-site.com
tar -xzf site-backup.tar.gz3.4 修改数据库配置
编辑网站根目录下的 wp-config.php,把数据库连接信息改成新服务器的:
define('DB_NAME', '新数据库名');
define('DB_USER', '新数据库用户名');
define('DB_PASSWORD', '新数据库密码');
define('DB_HOST', 'localhost');到这一步,如果域名没换,网站应该已经能正常访问了。
第四步:配置伪静态
如果你的 WordPress 使用了自定义固定链接(不是默认的 ?p=123 格式),需要配置伪静态规则,否则除了首页以外的页面都会 404。
宝塔面板: 网站设置 → 伪静态 → 选择 WordPress → 保存。一步搞定。
没有宝塔的情况下,根据你的 Web 服务器手动配置:
Apache
- 确保
mod_rewrite模块已开启(编辑httpd.conf,确认以下行没有被注释):
LoadModule rewrite_module modules/mod_rewrite.so- 在
httpd.conf中找到AllowOverride,改为:
AllowOverride All- 在网站根目录下创建或编辑
.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>如果 WordPress 安装在二级目录,把 RewriteBase / 改成 RewriteBase /二级目录名/。
Nginx
编辑网站配置文件(通常在 /etc/nginx/conf.d/your-site.conf 或 /etc/nginx/sites-available/),在 server {} 块内添加:
根目录安装:
location / {
try_files $uri $uri/ /index.php?$args;
}二级目录安装:
location /二级目录名/ {
try_files $uri $uri/ /二级目录名/index.php?$args;
}说明: 上面的 Nginx 规则使用了
try_files写法,比老版本的if判断写法更高效、更安全,是目前 Nginx 官方推荐的方式。
配置完成后重载 Nginx:
nginx -t && nginx -s reload到这里,网站搬迁就完成了。
第五步(可选):换域名
如果你同时更换了域名,需要在数据库中把所有旧域名替换为新域名。
登录 phpMyAdmin 或通过命令行执行以下 SQL:
同协议换域名(HTTP → HTTP 或 HTTPS → HTTPS)
UPDATE wp_options SET option_value = REPLACE(option_value, 'www.olddomain.com', 'www.newdomain.com');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.olddomain.com', 'www.newdomain.com');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'www.olddomain.com', 'www.newdomain.com');
UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'www.olddomain.com', 'www.newdomain.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'www.olddomain.com', 'www.newdomain.com');同时升级 HTTPS
如果旧站是 HTTP,新站要用 HTTPS:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://www.olddomain.com', 'https://www.newdomain.com');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://www.olddomain.com', 'https://www.newdomain.com');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'http://www.olddomain.com', 'https://www.newdomain.com');
UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'http://www.olddomain.com', 'https://www.newdomain.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://www.olddomain.com', 'https://www.newdomain.com');补充说明: 原文没有包含
wp_postmeta表的替换,但这张表里存储了自定义字段、页面构建器数据等,里面经常包含完整 URL。建议一并替换,避免遗漏。
常见问题
Q:搬迁后后台登录不了?
检查 wp-config.php 的数据库配置是否正确,以及数据库服务是否正常运行。
Q:搬迁后图片全部裂了?
大概率是域名替换没做完整,检查 wp_posts 和 wp_postmeta 表中是否还有旧域名。
Q:搬迁后只有首页正常,其他页面 404? 伪静态没配置。按照第四步操作即可。
Q:要不要用插件搬迁(如 All-in-One WP Migration)? 小站可以用,方便快捷。但大站(数据库超过几百 MB)或者服务器环境差异大的情况下,手动搬迁更可控。