今回はウェブ上に情報が少ないかと思いますのでマルチサイトをサブディレクトリにデータごと移動してしまう方法をご紹介いたします。
この記事で取り扱う方法は、
例として下記のようなマルチサイトを構築している場合に
http://example.com/
http://example.com/site2
http://example.com/site3
下記のようにマルチサイトのディレクトリを一段奥に全て移行してしまう方法です。
http://example.com/newdir/
http://example.com/newdir/site2
http://example.com/newdir/site3
(ワードプレスのデータはnewdirに移動させます)

htaccessの設定変更

マルチサイトをnewdirというディレクトリに移行する場合HTACCESSファイルの下記の部分を書き換えます。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
.
.
.

RewriteEngine On
RewriteBase /newdir/ #書き換えるのはここだけです!
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
.
.
.

wp-config.phpの設定変更

次に、wp-config.phpの設定を書き換えます。下記のように書き換えましょう

define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/newdir/'); //書き換えるのはこちらです
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

データベースのURL情報を変更する

最後にデータベースのテーブルのURL情報を書き換えます。データベースに接続(参考記事 データベース管理プログラム「Adminer」を使おう)されたら、wp_blogsというテーブルを表示させて下記のようにPATHのところに追加したディレクトリを書き換えます。

次に、マルチサイトのそれぞれのURLをデータベースで書き換えていきます。これにはデータベースを一括で書き換えてくれるPHPソフトウェアSearch Replace DB2を使います

こちらのソフトウェアをワードプレスのwp-config.phpファイルがあるディレクトにアップロードして一括書き換えを実施します。ソフトウェアにブラウザーからアクセスされましたら、

①置き換え前のドメインがexample.comの場合、Replaceに「example.com」と記載しWithのところに移行したサブドメインを追記します

②wp_blogsテーブルは先ほどすでに置き換えしましたので、再度置き換えが実施されないように置き換え対象テーブルから外します。

③「Live Run」ボタンでデータベースのURLが一括で書き換わります。

※この処理の前には一応データベースのバックアップをお取りください。

データの移行

最後にFTPでサイトのデータディレクトリに接続の上、ワードプレスのデータ全てを移行されたいサブフォルダー(この例ではnewdir)を作って移動させます。

WordPress のマルチサイトの移行、SSL化、カスタマイズのご依頼はWPドクターまでお気軽にご相談ください