WordPressマルチサイトはサブドメインとサブディレクトリをネットワーク作成前に選ぶ
公開日: 執筆:佐藤
WordPressマルチサイトのサブドメイン型とサブディレクトリ型は、見た目の好みだけで選びません。各サイトのURL、DNSとサーバーの管理権限、既存パーマリンク、引継ぎ後の担当者を確認し、ネットワークを作成する前に決めます。
ネットワーク作成後は、SUBDOMAIN_INSTALLと書き換え規則に選択結果が反映されます。管理画面のラジオボタンを切り替えるだけの変更ではないため、先にURL設計と復旧方法を確定してください。
二つの方式はサイトURLの作り方が違う
WordPress 3.7のNetwork Setupは、ネットワーク内サイトのアドレスを二方式から選びます。
| 方式 | サイトURLの例 | 作成前に確認する対象 |
|---|---|---|
| サブドメイン型 | site1.example.com |
ワイルドカードDNS、ウェブサーバー、ホスティング契約 |
| サブディレクトリ型 | example.com/site1 |
既存パーマリンク、予約するパス、書き換え規則 |
サブディレクトリ型のsite1は、サーバーへsite1フォルダーを一つずつ作るという意味ではありません。WordPressがURLのパスを読み、ネットワーク内のサイトを選びます。サブドメイン型も、各サイトへWordPressを別々に設置する方式ではありません。
ここで決めるのは、ネットワーク内サイトをどのURLで識別するかです。WordPress本体を/wordpress/などのサブディレクトリへ置く話とは分けます。
サブドメイン型はDNSとサーバーの権限を先に確かめる
サブドメイン型で、利用者が新しいサイトを随時作れるようにするなら、*.example.comを同じWordPressへ向けるワイルドカードDNSが必要です。Network Setupも、ワイルドカードサブドメインをDNSとApacheで有効にする必要があると案内しています。
契約中のサーバーで次を確認します。
- ワイルドカードDNSレコードを追加できるか
- 任意のサブドメインをWordPressの設置先へ向けられるか
- DNSとウェブサーバーの変更担当は誰か
- 既存の
mail.example.comやshop.example.comと衝突しないか - 設定を戻すための記録と権限があるか
WordPressの管理者権限だけでは、DNSとウェブサーバーは変更できません。制作会社がネットワークを設定できても、ドメイン管理を別会社が持っているなら、その担当者との作業日程が必要です。
サブディレクトリ型は既存URLとの衝突を調べる
サブディレクトリ型では、example.com/site1のようなパスを各サイトへ使います。候補名が、固定ページ、投稿カテゴリー、既存ディレクトリ、別システムのURLと重ならないかを調べます。
WordPress 3.7のallow_subdirectory_install()は、一か月より古い公開投稿がある場合、標準のNetwork Setupでサブディレクトリ型を選べないようにします。メインサイトの/blog/を含むパーマリンクとの問題を避けるためです。
サブディレクトリ型の選択肢が表示されないとき、画面の故障と決めません。公開投稿の日付、現在のパーマリンク、既存URLを確認します。定数やフィルターで判定を上書きする前に、変更されるURLと転送方法を一覧にします。
設置場所によって選べる方式が制限される
allow_subdomain_install()は、サイトのHome URL、ホスト名、IPアドレスを調べます。WordPress 3.7の標準画面では、次の条件でサブドメイン型を選べません。
- Home URLに
/wordpress/などのパスがある - ホスト名が
localhostである - ホスト名がIPv4アドレスである
この場合はサブディレクトリ型になります。逆に、一か月より古い公開投稿があり、サブドメイン型を利用できる構成では、サブドメイン型だけが表示される場合があります。
また、Network Setupは、通常のHTTPとHTTPS以外のポート番号を含むサーバーアドレスではネットワークを作成できません。開発環境のURLをそのまま本番設計へ流用せず、公開するドメインと設置場所で選択肢を確認します。
SUBDOMAIN_INSTALLは作成結果として設定される
WP_ALLOW_MULTISITEをtrueにする操作は、Network Setupを表示する準備です。それだけではネットワークは完成しません。
Network Setupで方式を選び、ネットワークを作成すると、WordPressはwp-config.phpへ追加する設定を表示します。主な項目は次のとおりです。
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true ); // サブドメイン型の例
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/' );
同時に、選択した方式に対応する.htaccessまたはweb.configの規則も表示されます。SUBDOMAIN_INSTALLだけを変更しても、DNS、データベース内のサイト情報、書き換え規則、既存URLは自動で移行しません。
画面には「あとから変更できない」と表示されます。技術的な再構成が不可能という意味に狭めず、通常の設定変更として扱えないという警告として受け取ります。
URL方式より先にネットワークの必要性を確認する
複数サイトを一つのWordPressネットワークで管理すると、Coreと利用可能なテーマ、プラグイン、ネットワーク設定を共有します。各サイトの担当会社、更新日、停止条件、引継ぎ先が別々なら、一つにまとめることが運用上の利点になるとは限りません。
ネットワークを作る前に、次の五点を書き出します。
- 何個のサイトを、誰が追加するか
- サイトごとのURLを誰が決めるか
- DNS、サーバー、WordPressを誰が管理するか
- Core、テーマ、プラグインを誰が更新するか
- 一サイトだけを分離するとき、データとURLをどう引き継ぐか
そのうえで、サブドメイン型ならDNSとサーバーの事前試験、サブディレクトリ型なら既存URLとの衝突調査を行います。ネットワーク機能を有効にすることではなく、各サイトを同じ責任範囲で運用できることが導入条件です。
関連記事

