WordPress マルチサイト: サブドメインとサブディレクトリの2つの構成
WordPress マルチサイト(WordPress Multisite)は、1つの WordPress インストールで複数のサイトをネットワークにまとめて管理する機能です。Nginx + Apache 構成の WordPress でサイトネットワークの設置画面からマルチサイトを有効にし、サブサイトを1つ追加して、メニューの場所と設定ファイルに入る行を確認しました。
1️⃣ WordPress マルチサイトとサイトネットワーク管理
マルチサイトでは、1つの WordPress インストールをネットワーク内のすべてのサイトが共同で使います。コアファイルとプラグイン、テーマも共有するため、サーバーにサイトごとの WordPress フォルダーはできません。
サイトごとに別々にできるのは、データベースのテーブルとメディアのアップロードフォルダーで、ユーザーテーブルだけはネットワーク全体で共有します。最初のサイトは既存の [/wp-content/uploads/] を、次のサイトからは [/wp-content/uploads/sites/] の中のサイト番号フォルダーを使います。
ネットワーク全体を管理するユーザーは特権管理者(Super Admin)です。サイトネットワーク管理の画面はネットワークを作成した後にでき、特権管理者にだけ表示されます。
ユーザーはネットワークのアカウントとして作られますが、各サイトで権限グループを割り当てられて初めて、そのサイトにアクセスできます。サイト管理者の権限も縮小され、テーマとプラグインのインストールや、ほかのユーザーのプロフィール編集は特権管理者だけが行えます。
下の図で、1つのインストールがネットワークを通って複数のサイトに分かれる構成と、アドレス方式ごとのサイトアドレスを確認できます。
2️⃣ サブドメインとサブディレクトリの違い: アドレスの形式と選択の制限
サイトネットワークを設置するとき、サイトのアドレス方式をサブドメインとサブディレクトリのどちらかに決めます。サブドメインは site1.example.com、サブディレクトリ(サブフォルダー)は example.com/site1 形式のアドレスです。
| 項目 | サブドメイン | サブディレクトリ |
|---|---|---|
| サイトのアドレス | site1.example.com | example.com/site1 |
| 公式ドキュメントでの名前 | ドメインベース(domain-based) | パスベース(path-based) |
| サーバー側の準備 | DNS とサーバーでサブドメインを WordPress のインストールフォルダーにつなぐ | パーマリンクが動いていれば追加設定なし |
| ユーザーが自分でサイトを作るとき | ワイルドカードサブドメインが必要 | 追加の条件なし |
| 選べない場合 | WordPress のアドレスにパスがあるか、localhost や IP アドレスのとき | 公開から1か月を過ぎた投稿があるサイト |
| メインサイトの投稿アドレス | 変化なし | 投稿アドレスの前に /blog/ を追加 |
サブディレクトリ方式は、パーマリンクが動くサーバーなら特に設定することはありませんが、公開から1か月を過ぎた投稿があるサイトでは選べません。既存の投稿アドレスと新しいサイトのアドレスがぶつかるのを防ぐための制限で、こうしたサイトはサブドメイン方式で設置することになります。
サブディレクトリのネットワークのメインサイトでは、投稿アドレスに [/blog/] が追加されます。サブサイトのアドレスと重ならないようにするための構成で、固定ページのアドレスには追加されません。
一度決めた方式を後で変えるには、いくつもの手順が必要です。公式ドキュメントによると、[SUBDOMAIN_INSTALL] の値と書き換えルールを変えるだけでは既存のサイトのアドレスは移らず、DNS と証明書も別に設定する必要があります。
3️⃣ サイトネットワーク設置前の準備: バックアップとパーマリンク、サーバーの条件
サイトネットワークの設置は既存サイトのファイルとデータベースを変える作業なので、公式ドキュメントは新しくインストールしたサイトでなければ先にバックアップするよう案内しています。
データベースとファイルをバックアップし、パーマリンクが動いていることを確認してから、有効なプラグインをすべて無効化します。プラグインはネットワークを作成した後に再び有効化します。
WordPress を専用のフォルダーで動かすように変える予定なら、マルチサイトを有効にする前に済ませます。サブドメイン方式で www アドレスを使う場合は [WordPress アドレス (URL)] と [サイトアドレス (URL)] を同じにそろえ、ドメインの変更も設置前に終えます。
WordPress のアドレスに :80 や :443 以外のポート番号が付いていると、ネットワークは作成できません。
サーバーはマルチサイト用の書き換えルールを処理できる必要があり、Apache では mod_rewrite が必要です。
Nginx + Apache 構成では、Nginx がリクエストを Apache に渡し、Apache が .htaccess を読みます。サイトネットワークの設置画面に表示されたルールで .htaccess を置き換えるとサブサイトのアドレスが開き、Nginx 側に追加したルールはありません。
Nginx だけを使うサーバーでは WordPress が書き換えルールを作らないため、公式ドキュメントの Nginx 設定をサーバーの設定ファイルに直接追加する必要があります。
共用ホスティングのようにサーバー設定を自分で変えられない環境では、ワイルドカードサブドメインのような条件はホスティング会社と相談する必要があります(公式ドキュメントによる)。
4️⃣ サイトネットワークの設置手順
wp-config.php に入れる [WP_ALLOW_MULTISITE] 定数は [ツール] › [サイトネットワークの設置] メニューを表示するだけで、これだけではマルチサイトは有効になりません。ネットワークはその画面で設置した後、画面に出た行を wp-config.php と .htaccess に追加して初めて有効になります。
wp-config.php を開き、[WP_ALLOW_MULTISITE] を true と定義する行を編集終了のコメントの上に追加します。編集終了のコメントは /* That’s all, stop editing! Happy publishing. */ の行で、保存したらブラウザーを再読み込みします。
define( 'WP_ALLOW_MULTISITE', true );再読み込みすると [ツール] メニューの [個人データの消去] の下に [サイトネットワークの設置] が追加され、このメニューを押すと [WordPress サイトネットワークの作成] 画面が開きます。

サブフォルダーにインストールした WordPress では、アドレス方式を選ぶ欄がなく [サブディレクトリへのインストール] の行だけが表示されます。その行の文言は [この WordPress はディレクトリにインストールされているため、サイトネットワーク内のサイトはサブディレクトリを使う必要があります。] です。
[サイトネットワーク名] と [サイトネットワーク管理者のメールアドレス] を確認してから [インストール] を押します。
公式ドキュメントによると、アドレス方式を選べるインストールでサブドメインを選ぶとワイルドカード DNS の案内が表示され、この条件はユーザーが自分でサイトを作るネットワークにだけ必要です。
設置後の画面には、そのサイトに合わせた wp-config.php の行と .htaccess のルールが表示されます。2つのファイルをバックアップし、wp-config.php では [WP_ALLOW_MULTISITE] の行の下に貼り付け、.htaccess は既存の WordPress のルールを新しいルールに置き換えます。

設置後の画面の案内では編集終了のコメントが管理画面の言語に翻訳されて表示されますが、wp-config.php の中のコメントは英語のままです。
wp-config.php に追加される行は、[MULTISITE] と [SUBDOMAIN_INSTALL] をはじめとする6つの定数です。[SUBDOMAIN_INSTALL] の値はサブドメインなら true、サブディレクトリなら false です。
[DOMAIN_CURRENT_SITE] と [PATH_CURRENT_SITE] には、そのサイトのドメインとインストールパスが入ります。下は example.com のルートにサブディレクトリ方式で設置した場合の行です。
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 );同じ場合、.htaccess の WordPress のルールは次のように置き換え、[RewriteBase] の行にはインストールパスが入ります。
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]2つのファイルを保存してから画面の [ログイン] リンクで再びログインすると、管理バーの [参加サイト] の下に [サイトネットワーク管理] ができます。ログインできない場合は、ブラウザーのキャッシュと Cookie を削除してから再びログインします。

[サイトネットワーク管理] にはダッシュボード、サイト、ユーザー、テーマ、プラグイン、設定の6つのメニューがあり、[サイト] を押すとネットワークのサイト一覧が開きます。

サブサイトは一覧タイトル横の [サイトを追加] か、左の [サイト] › [サイトを追加] から追加します。

[サイトアドレス (URL)] には小文字と数字、ハイフンだけを入力でき、[管理者メールアドレス] がデータベースにないアドレスなら新しいユーザーが作成されます。
サブサイトを1つ追加すると、アップロードフォルダーに [sites/2] フォルダーができ、データベースには [wp_2_] のように接頭辞の後にサイト番号が付いたテーブルが10個追加されました。
サブサイトのパーマリンクはメインサイトの設定に従わず、年・月・日と投稿名が入った基本の構造から始まるため、サブサイトのパーマリンク設定で別に決めます。
下のシミュレーターで、[ツール] › [サイトネットワークの設置] から [サイトを追加] までの画面を順に押して確かめられます。
네트워크 설치 절차에 오신 것을 환영합니다!
아래의 정보를 채우고 워드프레스 사이트의 네트워크를 만들 수 있습니다. 다음 단계에서 구성 파일을 만들 것입니다.
다음 단계를 완료하여 사이트의 네트워크 만들기 기능을 활성화하세요.
- /var/www/html/wp/의 wp-config.php파일에 /* 그게 다입니다. 편집을 멈추세요! 즐겁게 발행하세요. */행 위에 다음을 추가합니다:wp-config.php에 대한 네트워크 환경설정 규칙define( 'MULTISITE', true );define( 'SUBDOMAIN_INSTALL', false );define( 'DOMAIN_CURRENT_SITE', 'example.com' );define( 'PATH_CURRENT_SITE', '/wp/' );define( 'SITE_ID_CURRENT_SITE', 1 );define( 'BLOG_ID_CURRENT_SITE', 1 );
- 다른 워드프레스 규칙을 교체하는 /var/www/html/wp/의 .htaccess 파일에 다음을 넣습니다:.htaccess에 대한 네트워크 환경설정 규칙RewriteEngine OnRewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]RewriteBase /wp/RewriteRule ^index\.php$ – [L]# add a trailing slash to /wp-adminRewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]RewriteCond %{REQUEST_FILENAME} -f [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^ – [L]RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]RewriteRule . index.php [L]
이 단계를 완료하고나면, 네트워크를 활성화하고 구성합니다. 다시 로그인해야 합니다.
위의 이메일 주소가 데이터베이스에 없으면 새 사용자를 만들 것입니다.
비밀번호를 설정하는 사용자 이름과 링크를 이 이메일 주소로 보낼 것입니다.
5️⃣ マルチサイトが合わない場合
マルチサイトは、地域別のサイトのようにテーマとプラグインは共有し、コンテンツは別々に運営する場合に向いています。サイト同士でデータやユーザーを密に共有する必要があるなら、公式ドキュメントはマルチサイトが最善の方法ではない可能性があると案内しています。
デザインだけを違って見せたいなら、単一サイトでテーマやスタイルシートを切り替えるプラグインで解決できます。ユーザーグループごとに見える情報だけを変えたい場合も、権限とメニューを変えるプラグインで単一サイトのまま対応できます。
使っているプラグインも先に確認します。プラグインディレクトリのすべてのプラグインがマルチサイトで動くわけではないため、公式ドキュメントはプラグインのページや開発者に対応状況を確認するよう案内しています。
🔢 FAQ & おすすめコンテンツ
ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。