【WordPressマルチサイト】丸ごと別ドメインへ移行する方法

マルチサイト化したWordPress全体を丸ごと別環境へ引っ越しする方法。親サイトも子サイトもまとめて別ドメインのルート直下へ移動させる。移行先のドメインはサブドメイン(初期ドメイン)である。

手順

旧サーバーからWordPressフォルダを移行

移転元となる旧サーバーのWordPressフォルダを、移行先のサーバーへアップロードする。対象のフォルダは、public_html直下(ドキュメントルート)にある全てのフォルダ・ファイルとなる。

  • public_html //こちらのディレクトリ内すべて
    • wp-admin
    • wp-content
    • wp-include
    • .htaccess
    • index.php
    • license.txt
    • readme.html
    • wp-activate.php
    • wp-blog-header.php
    • wp-comments-post.php
    • wp-config.php
    • wp-config-sample.php
    • wp-cron.php
    • wp-links-opml.php
    • wp-load.php
    • wp-login.php
    • wp-mail.php
    • wp-settings.php
    • wp-signup.php
    • wp-trackback.php
    • xmlrpc.php

wp-config.phpのデータベース情報を編集する

wp-config.phpのデータベース接続情報を、新環境のデータベース接続情報へ書き換える。


/** WordPress のためのデータベース名 */
define('DB_NAME', 'XXXXX');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'XXXXX');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'XXXXX');

/** MySQL のホスト名 */
define('DB_HOST', 'XXXXX');

wp-config.phpのドメインを編集する

マルチサイト化した際にwp-config.phpに追記したコードにあるドメイン名を、移行先のドメインへ書き換える。


/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */
define('WP_ALLOW_MULTISITE', true);

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'XXXXX');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

保存してサーバーへアップロードする。

データベースを移行する

移行元からデータベースをエクスポートし、移行先へインポートする。

データベースの旧ドメインの置換

インポートしたデータベースには旧ドメイン情報が登録されたままになっている。まずは管理画面アクセスに関係する値を変更する。

  • wp_options:option_name「siteurl」のoption_valueの値
  • wp_x_options:option_name「siteurl」のoption_valueの値
  • wp_blogs:domainの値
  • wp_site:domainの値
  • wp_sitemeta:meta_key「siteurl」のmeta_valueの値
  • wp_usermeta:meta_key「source_domain」のmeta_valueの値

入力にミスがあると、データベース接続エラーや「リダイレクトが繰り返し行われました。」のようなエラー表示になってしまう。

メモ

  • ドメインを入力するのか、サイトURLを入力するのか、よく注意すること

管理画面にログインする

管理画面にログインすることが確認できたら、サイトごとにURLの置換や画像パスの確認、ウィジェットやメニューのリンクの確認などを行う。

データベースの残りの置換を行う

旧ドメインが残っているようなら置換する。

子サイトのトップページが表示されない

試したこと

  • wp-config.phpと.htaccessのマルチサイト用コードを貼り付け直し
  • パーマリンク設定や投稿設定を変更せずに保存する
  • キャッシュを削除する
  • サブディレクトリ名と同名の固定ページはない
  • 別の子サイトは追加できる
  • プラグイン無効化、テーマデフォルトでも表示されない
  • サーバー上にサブディレクトリと同名のフォルダが存在した。 解決!