
マルチサイトの情報がサブディレクトリ型が多く、サブドメインでマルチサイト化した際少し躓いたのでメモ。
マルチサイト化
config.phpに下記を追加してマルチサイトを有効化する
/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );
サイトネットワークの設置をしてconfig.phpとhtaccessに追記をする
//config.php
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'test.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
#htaccess
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) wp/$1 [L]
RewriteRule ^(.*\.php)$ wp/$1 [L]
RewriteRule . index.php [L]
ディレクトリ構成

htaccessの変更
RewriteBase /
↓
RewriteBase /wp/
へルートを変更
RewriteRule ^(wp-(content|admin|includes).*) wp/$1 [L]
RewriteRule ^(.*.php)$ wp/$1 [L]
wp/を除く↓
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*.php)$ $1 [L]
サイトネットワークの管理画面のURLがおかしい
wp-config.phpに追加
<?php //wp-config.php
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
// ▼ ネットワーク管理画面のURLを変更するフィルター ▼
// WordPressのディレクトリ
define('__WORDPRESS_CORE_DIR__', '/wp');
// ネットワーク管理画面のURLを上書き
add_filter('network_admin_url', 'rewrite_my_network_admin_url', 10, 2);
function rewrite_my_network_admin_url($url, $path) {
$networkPath = str_replace( '/wp-admin/', __WORDPRESS_CORE_DIR__ . '/wp-admin/', $url );
return $networkPath;
}
サイトネットワークのURLが確かに気持ち悪かったのでかもメモさんの記事を参考に、サイトネットワークのURLを上書き。
とりあえず今のところ問題なく動作しています。
追加サイトの管理画面URL
サイトネットワーク管理>ダッシュボード>サイト>すべてのサイト>追加サイトを選択>設定タブからsiteurlの変更が可能。
※siteurl > WordPressがインストールされている場所のアドレス。
※home > サイトのページのURL
マルチサイトのやり直し
マルチサイト化したけどやり直したくなり(まだデータがほとんどない状態で)マルチサイトを解除、再度マルチサイト化しました。
これ作りこんだ後にやるのは結構大変そうだしリスクが大きい気がしますのでご注意ください。DBのバックアップを忘れずに!
config.phpとhtaccess追記した分を消す。
追加したサイトのデータとサイトを削除。
データベースから_site、_sitemeta、_blogsを空にする(投稿などがある場合ほかにも空にする必要あり)これで最初の状態に戻るはず。
↑_blogsも削除しないと再度マルチサイト化した際リダイレクトエラーが発生。
サイトネットワークのデータベーステーブルを空にするか削除する必要があります @koba_ndr
↑Qiitaの記事を参考にさせていただき、データベースを削除。
_site、_sitemetaを削除した時点でうまく動作してくれましたが、再度マルチサイト化した際リダイレクトエラーが発生。
_blogsを削除したところ無事リダイレクトエラーが治りました。
感想
サブドメインってあまり需要ないのかな?
データベースの操作とか勢いでやるもんではないなと痛感、、、。
