← 返回博客
WordPress运维教程

WordPress 手动搬迁指南 + 换域名(宝塔 / 无宝塔通用)

完整的 WordPress 网站手动迁移教程,涵盖文件打包、数据库导入、伪静态配置和域名替换,适用于任何 Linux 服务器环境。

⚠️ 重要提醒:操作前请务必完整备份网站文件和数据库!搬迁过程中任何一步出错,都可能导致数据丢失。备份是你的唯一后悔药。

适用场景

整个流程分四步:打包文件 → 导出数据库 → 导入新服务器 → 配置伪静态。如果要换域名,最后多一步 SQL 替换。


第一步:打包网站文件

把网站根目录下的所有文件打包压缩。

打包网站根目录所有数据

宝塔面板可以直接在文件管理器里右键压缩;没宝塔的话用命令行:

bash已剪下 ✓
cd /www/wwwroot/your-site.com
tar -czf site-backup.tar.gz .

打包完成后下载到本地备份。

第二步:导出数据库

phpMyAdmin 导出数据库(如果没装可以通过宝塔一键安装,或者用命令行)。

导出数据库

phpMyAdmin 方式: 登录后选中你的数据库 → 点击「导出」→ 选择「快速」→ 格式选 SQL → 点击「执行」。

命令行方式:

bash已剪下 ✓
mysqldump -u 用户名 -p 数据库名 > backup.sql

第三步:导入到新服务器

3.1 创建新数据库

在新服务器上创建数据库。注意:新数据库的名字最好和旧的一样,否则导入时会报错。

如果新数据库名字必须不同,需要手动编辑导出的 SQL 文件,把里面的旧数据库名替换成新的:

修改数据库名

sql已剪下 ✓
-- 把文件开头的这行改掉
USE `旧数据库名`;
-- 改为
USE `新数据库名`;

3.2 导入数据库

导入数据库

phpMyAdmin 方式: 选中新数据库 → 点击「导入」→ 选择 SQL 文件 → 执行。

命令行方式:

bash已剪下 ✓
mysql -u 用户名 -p 新数据库名 < backup.sql

3.3 上传并解压网站文件

把打包的文件上传到新服务器的网站根目录下,解压:

bash已剪下 ✓
cd /www/wwwroot/your-site.com
tar -xzf site-backup.tar.gz

3.4 修改数据库配置

编辑网站根目录下的 wp-config.php,把数据库连接信息改成新服务器的:

php已剪下 ✓
define('DB_NAME', '新数据库名');
define('DB_USER', '新数据库用户名');
define('DB_PASSWORD', '新数据库密码');
define('DB_HOST', 'localhost');

到这一步,如果域名没换,网站应该已经能正常访问了。


第四步:配置伪静态

如果你的 WordPress 使用了自定义固定链接(不是默认的 ?p=123 格式),需要配置伪静态规则,否则除了首页以外的页面都会 404。

宝塔面板: 网站设置 → 伪静态 → 选择 WordPress → 保存。一步搞定。

没有宝塔的情况下,根据你的 Web 服务器手动配置:

Apache

  1. 确保 mod_rewrite 模块已开启(编辑 httpd.conf,确认以下行没有被注释):
apache已剪下 ✓
LoadModule rewrite_module modules/mod_rewrite.so
  1. httpd.conf 中找到 AllowOverride,改为:
apache已剪下 ✓
AllowOverride All
  1. 在网站根目录下创建或编辑 .htaccess 文件:
apache已剪下 ✓
<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 {} 块内添加:

根目录安装:

nginx已剪下 ✓
location / {
    try_files $uri $uri/ /index.php?$args;
}

二级目录安装:

nginx已剪下 ✓
location /二级目录名/ {
    try_files $uri $uri/ /二级目录名/index.php?$args;
}

说明: 上面的 Nginx 规则使用了 try_files 写法,比老版本的 if 判断写法更高效、更安全,是目前 Nginx 官方推荐的方式。

配置完成后重载 Nginx:

bash已剪下 ✓
nginx -t && nginx -s reload

到这里,网站搬迁就完成了


第五步(可选):换域名

如果你同时更换了域名,需要在数据库中把所有旧域名替换为新域名。

登录 phpMyAdmin 或通过命令行执行以下 SQL:

同协议换域名(HTTP → HTTP 或 HTTPS → HTTPS)

sql已剪下 ✓
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:

sql已剪下 ✓
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_postswp_postmeta 表中是否还有旧域名。

Q:搬迁后只有首页正常,其他页面 404? 伪静态没配置。按照第四步操作即可。

Q:要不要用插件搬迁(如 All-in-One WP Migration)? 小站可以用,方便快捷。但大站(数据库超过几百 MB)或者服务器环境差异大的情况下,手动搬迁更可控。