WordPressをサブディレクトリに展開し、サブドメインでマルチサイト化したときの流れ 

マルチサイトの情報がサブディレクトリ型が多く、サブドメインでマルチサイト化した際少し躓いたのでメモ。

マルチサイト化

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]

ディレクトリ構成

WordPress_構成

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を上書き。
とりあえず今のところ問題なく動作しています。

かもメモ – WordPress マルチサイト ネットワーク管理画面のURLが変?

追加サイトの管理画面URL

サイトネットワーク管理>ダッシュボード>サイト>すべてのサイト>追加サイトを選択>設定タブからsiteurlの変更が可能。

※siteurl > WordPressがインストールされている場所のアドレス。
※home > サイトのページのURL

マルチサイトのやり直し

マルチサイト化したけどやり直したくなり(まだデータがほとんどない状態で)マルチサイトを解除、再度マルチサイト化しました。
これ作りこんだ後にやるのは結構大変そうだしリスクが大きい気がしますのでご注意ください。DBのバックアップを忘れずに!

config.phpとhtaccess追記した分を消す。
追加したサイトのデータとサイトを削除。
データベースから_site、_sitemeta、_blogsを空にする(投稿などがある場合ほかにも空にする必要あり)これで最初の状態に戻るはず。
↑_blogsも削除しないと再度マルチサイト化した際リダイレクトエラーが発生。

サイトネットワークのデータベーステーブルを空にするか削除する必要があります @koba_ndr

↑Qiitaの記事を参考にさせていただき、データベースを削除。
_site、_sitemetaを削除した時点でうまく動作してくれましたが、再度マルチサイト化した際リダイレクトエラーが発生。
_blogsを削除したところ無事リダイレクトエラーが治りました。

感想

サブドメインってあまり需要ないのかな?
データベースの操作とか勢いでやるもんではないなと痛感、、、。

カテゴリーWEB

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です