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