WordPress开发笔记

WordPress多站点搬家的详细步骤

以下是 WordPress多站点(Multisite)搬家的详细步骤,适用于更换服务器或域名。

该教程已经经过找找网成功测试。


一、准备工作

  1. 备份所有数据
  • 网站文件:通过FTP/SFTP下载整个WordPress根目录(包含wp-contentwp-config.php等)。
  • 数据库:使用phpMyAdmin导出数据库(选择“自定义”导出格式,勾选“添加 DROP TABLE”选项)。
  1. 记录关键信息
  • 原站点的数据库名称、用户名、密码。
  • 原多站点的域名(如 old-domain.com)和文件路径(如网站根目录绝对路径)。

二、迁移到新服务器/域名

1. 上传文件到新服务器

  • 将备份的WordPress文件通过FTP/SFTP上传到新服务器的目标目录。
  • 确保文件权限正确(目录通常为755,文件为644wp-content可能需要775)。

2. 创建新数据库

  • 在新服务器创建数据库,并记录新数据库的名称、用户名、密码。
  • 保持数据库字符集与原数据库一致(通常为utf8mb4_unicode_ci)。

3. 修改配置文件

  • 编辑 wp-config.php,更新以下信息:
  define('DB_NAME', '新数据库名');
  define('DB_USER', '新数据库用户');
  define('DB_PASSWORD', '新数据库密码');
  define('DB_HOST', 'localhost'); // 根据实际修改
  • 如果更换域名,添加以下代码(替换new-domain.com):
  define('DOMAIN_CURRENT_SITE', 'new-domain.com');

三、导入并修改数据库

1. 导入数据库

  • 使用phpMyAdmin将备份的数据库导入到新服务器。

2. 替换旧域名/路径

  • 情况1:仅更换服务器,域名不变
    替换所有旧服务器绝对路径(如 /home/olduser/public_html/home/newuser/public_html)。
  • 情况2:更换域名
    替换所有旧域名为新域名(如 old-domain.comnew-domain.com)。
  • 推荐工具
  • WP-CLI(命令行):
    bash wp search-replace "old-domain.com" "new-domain.com" --all-tables wp search-replace "/old/path" "/new/path" --all-tables
  • 插件/脚本
    使用 Better Search Replace 插件或 Search Replace DB 脚本(避免序列化数据损坏)。

3. 更新多站点配置

  • 检查以下表的数据是否正确:
  • wp_blogs:所有子站点的域名和路径。
  • wp_site:主站点的域名和路径。
  • wp_sitemeta:确认siteurlhome等选项。

四、配置服务器环境

  1. 设置伪静态规则
  • 确保.htaccess(Apache)或Nginx配置包含多站点规则。
  • 默认多站点.htaccess内容:
    RewriteEngine On RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
  1. 配置域名解析
  • 如果更换域名,需将新域名解析到新服务器IP,并确保服务器已绑定该域名。

五、测试与修复

  1. 访问主站点
  • 打开新域名,检查是否能正常加载。
  • 登录后台(new-domain.com/wp-admin),检查插件、主题是否正常。
  1. 检查子站点
  • 逐个访问子站点,确认媒体文件、链接是否正常。
  • 若图片无法显示,检查wp-content/uploads/sites/目录权限是否为755775
  1. 处理常见问题
  • 404错误:重新保存固定链接(后台 → 设置 → 固定链接 → 点击“保存”)。
  • 数据库连接错误:检查wp-config.php中的数据库信息。
  • 混合内容警告(HTTPS):在数据库中替换http://https://,并更新wp-config.php添加:
    php define('FORCE_SSL_ADMIN', true); $_SERVER['HTTPS'] = 'on';

六、收尾工作

  1. 删除临时文件
  • 移除数据库备份文件(如search-replace-db.php)。
  1. 重定向旧域名(可选)
  • 在旧服务器添加301重定向(通过.htaccess或Nginx配置),将流量指向新域名。

注意事项

  • 如果使用子目录模式,确保路径替换准确。
  • 迁移后建议暂时禁用缓存插件,避免冲突。
  • 测试时可通过修改本地Hosts文件强制解析到新服务器(无需等待DNS生效)。

完成以上步骤后,你的WordPress多站点应已成功迁移!