• WordPressマルチサイトはサブドメインとサブディレクトリをネットワーク作成前に選ぶ

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と利用可能なテーマ、プラグイン、ネットワーク設定を共有します。各サイトの担当会社、更新日、停止条件、引継ぎ先が別々なら、一つにまとめることが運用上の利点になるとは限りません。

ネットワークを作る前に、次の五点を書き出します。

  1. 何個のサイトを、誰が追加するか
  2. サイトごとのURLを誰が決めるか
  3. DNS、サーバー、WordPressを誰が管理するか
  4. Core、テーマ、プラグインを誰が更新するか
  5. 一サイトだけを分離するとき、データとURLをどう引き継ぐか

そのうえで、サブドメイン型ならDNSとサーバーの事前試験、サブディレクトリ型なら既存URLとの衝突調査を行います。ネットワーク機能を有効にすることではなく、各サイトを同じ責任範囲で運用できることが導入条件です。

戻る