Domain

Domain モジュールスイートは、単一のインストールとデータベースから、ドメイングループ間でユーザー、コンテンツ、設定を共有できます。

domain
11,435 sites
115
drupal.org

概要

Domain モジュールスイートは、Drupal 向けの包括的なマルチドメイン管理ソリューションを提供します。管理者は単一の Drupal インストール内で複数のドメインを登録し、ドメイン間でコンテンツとユーザーを共有し、ドメイン固有の設定とアクセス制御を提供できます。

このモジュールは、ドメインベースのコンテンツアクセス、ドメイン固有の設定オーバーライド、ワイルドカードパターン対応のドメインエイリアス、SEO 向けの正規 URL 管理、クロスドメインログインサポートなどの機能をサポートしています。ドメインレコードは設定エンティティとして保存されるため、サイト設定の一部としてエクスポート可能です。

このスイートには、Domain(コア機能)、Domain Access(コンテンツアクセス制御)、Domain Alias(ホスト名マッピング)、Domain Config(ドメインごとの設定)、Domain Config UI(設定用管理インターフェース)、Domain Content(ドメイン別コンテンツ概要)、Domain Source(正規 URL 管理)の複数のサブモジュールが含まれています。

Features

  • 単一の Drupal インストール内で、一意のホスト名とマシン名を持つ複数のドメインを登録
  • HTTP リクエストに基づいてアクティブなドメインを決定するドメインネゴシエーションシステム
  • ドメインごとに http、https、または可変 URL スキームをサポート
  • 共有 Cookie 設定によるクロスドメインユーザーログイン
  • コンテンツタイプごとに設定可能な権限を持つドメインベースのコンテンツアクセス制御
  • ワイルドカードパターンサポート(例:*.example.com)とリダイレクトオプションを持つドメインエイリアス
  • サイト名や設定を含む任意の Drupal 設定に対するドメインごとの設定オーバーライド
  • 言語対応のドメイン設定オーバーライド
  • ドメイン間で一貫したリンク生成のための正規 URL 管理(Domain Source)
  • 開発ワークフロー向けのドメイン環境マッピング(local、development、staging、testing)
  • ドメイン固有の値に対する Token サポート
  • body タグに追加されるドメインごとのカスタム CSS クラス
  • ドメインベースのアクセス制御とフィルターを持つ Views 統合
  • ドメイン管理操作用の Drush コマンド
  • ドメインナビゲーション、切り替え、サーバー情報表示用のブロックプラグイン
  • ドメインベースのブロック表示用 Condition プラグイン

Use Cases

マルチブランドウェブサイト

単一の Drupal インストールから複数のブランドウェブサイトを管理します。各ブランドは独自のドメイン(brand1.com、brand2.com)を持ち、同じユーザーベースと管理インターフェースを共有しながら、別々のサイト名、テーマ(Domain Theme Switch contrib モジュール経由)、コンテンツ表示設定を持つことができます。

マルチリージョンデプロイメント

1 つのコードベースからリージョン固有のウェブサイト(us.example.com、eu.example.com)を運用します。Domain Config を使用してドメインごとにサイト名、連絡先情報、リージョン設定をカスタマイズします。Domain Access を使用して、どのコンテンツがどのリージョンサイトに表示されるかを制御します。

開発ワークフロー

Domain Alias を使用して開発環境(example.local、example.dev.cloudhost.com、example.staging.cloudhost.com)を本番環境の対応物にマップします。ドメインレコードを変更せずに、開発の各段階でリンクが正しく書き換えられるように環境を設定します。

マイクロサイト

メインサイトのコンテンツ管理を共有しながら、別のドメインとして表示されるキャンペーン、イベント、製品発売用のマイクロサイトを作成します。Domain Access を使用して特定のコンテンツをマイクロサイトに割り当て、すべてを中央の管理画面から管理できるようにします。

イントラネットと公開サイト

同一のインストールから公開ウェブサイトとプライベートイントラネットの両方を運用します。Domain Access 権限を使用して、各ドメインで表示されるコンテンツタイプとノードを制御し、ドメインごとに別々のユーザーロールと権限を設定します。

SEO と正規 URL

Domain Source を使用して、複数のドメインに表示されるコンテンツが常に一貫した正規 URL を持つようにします。これにより、重複コンテンツの問題を防ぎ、検索エンジンランキングを希望するドメインに統合します。

フランチャイズまたはディーラーネットワーク

各ロケーションが独自のドメインを持つフランチャイズまたはディーラーウェブサイトのネットワークを管理します。共通コンテンツ(製品カタログ、ポリシー)をすべてのサイトで共有しながら、ロケーション固有のカスタマイズとコンテンツを許可します。

Tips

  • ドメインレコードは設定エンティティなので、サイト設定とともにエクスポートされ、バージョン管理で管理できます。
  • Domain Config を使用する場合は、適切なキャッシュセグメンテーションのために必ず required_cache_contexts に url.site を追加してください。
  • 開発ワークフロー用に環境ベースのエイリアスを使用して、開発中に本番ドメインレコードを変更しないようにします。
  • ドメイン切り替えブロックは開発中に便利ですが、本番では管理者ユーザーのみに制限する必要があります。
  • ドメインを削除するとき、コンテンツの再割り当てを求められます - 削除前にコンテンツ移行戦略を計画してください。
  • 開発中にテストドメインをすばやくセットアップするには drush domain:generate を使用します。
  • Domain Source はリンクを書き換えますが、リダイレクトは発行しません。リダイレクトが必要な場合は、Domain Alias で設定するか、別のリダイレクトモジュールを使用してください。
  • 大規模なマルチドメインサイトでは、パフォーマンス向上のためにバンドルごとのノードアクセス権限(Domain Access の実験的機能)の使用を検討してください。
  • CSS クラスでの Token サポートにより、domain-[domain:machine-name] のような動的クラスをドメイン固有のテーマフックに使用できます。

Technical Details

Admin Pages 11
ドメイン /admin/config/domain

登録されたすべてのドメインレコードを表示・管理します。ホスト名、名前、スキーム、ステータス、デフォルトフラグとともにドメインを一覧表示します。ドメインの有効化、無効化、デフォルト設定のインライン操作を提供します。現在アクティブなドメインは太字で表示されます。

ドメインレコードを追加 /admin/config/domain/add

ホスト名、名前、URL スキーム、ステータス設定を持つ新しいドメインレコードを作成します。

ドメイン設定 /admin/config/domain/settings

文字サポート、www プレフィックス処理、CSS クラス、非アクティブドメインのアクセス可能なパスなど、Domain モジュールのグローバル設定を構成します。

Domain Access 設定 /admin/config/domain/domain_access

Domain Access フィールドの表示方法とノードアクセス動作を制御します。

ドメインエイリアス /admin/config/domain/alias/{domain}

特定のドメインのエイリアスを管理します。エイリアスは、既存のドメインレコードにマップされる一意のドメインまたはパターンを定義し、ワイルドカードとリダイレクトオプションをサポートします。

ドメインエイリアスを追加 /admin/config/domain/alias/{domain}/add

パターン、リダイレクト、環境設定を持つドメインの新しいエイリアスを作成します。

ドメイン設定フォーム /admin/config/domain/config-ui

ドメイン固有のオーバーライドを持つことができる設定フォームと、除外する設定フォームを構成します。

保存された設定 /admin/config/domain/config-ui/list

保存されたすべてのドメイン固有の設定オーバーライドを、検査、有効化/無効化、削除のオプションとともに表示します。

Domain Source 設定 /admin/config/domain/domain_source

Domain Source のリンク書き換えから除外するルートとパスを構成します。

関連コンテンツ /admin/content/domain-content

割り当てられたドメイン別にコンテンツを確認します。ドメイン割り当てでフィルタリングされた Views ベースのコンテンツ概要ページを提供します。

関連エディター /admin/content/domain-editors

割り当てられたドメイン別にユーザーを確認します。ドメインエディター割り当てでフィルタリングされた Views ベースのユーザー概要ページを提供します。

権限 31
すべてのドメインレコードを管理

ドメインレコードの表示、作成、編集、削除。モジュールのすべての権限を許可します。アクセス制限あり。

非アクティブドメインにアクセス

非アクティブとしてマークされたドメインの URL にアクセスします。アクセス制限あり。

割り当てられたドメインに追加の管理者を割り当て

ユーザーがアクセスできるドメインに管理者を割り当てることを許可します。アクセス制限あり。

ドメインレコードを作成

新しいドメインレコードの作成を許可します。アクセス制限あり。

割り当てられたドメインレコードを編集

ユーザーに割り当てられたドメインレコードを編集します。アクセス制限あり。

割り当てられたドメインレコードを削除

ユーザーに割り当てられたドメインレコードを削除します。アクセス制限あり。

ドメインナビゲーションブロックにアクセス

ドメインナビゲーションブロックの表示を許可します。

ドメイン切り替えブロックにアクセス

ドメイン切り替えブロックの表示を許可します。アクセス制限あり。

管理リストで割り当てられたドメインを表示

管理リストでユーザーに割り当てられたドメインのみを表示します。

管理リストですべての登録済みドメインを表示

割り当てに関係なく、すべての登録済みドメインを表示します。

ドメイン処理のデバッグ情報を表示

詳細なドメインサーバー情報ブロックを表示します。アクセス制限あり。

公開されたドメインエンティティを表示

完全なリストへのアクセスを許可することなく、レンダリングに必要な場合にユーザーが個々のドメインエンティティを表示することを許可します。

すべてのドメインエイリアスを管理

すべてのドメインエイリアスへの完全な管理アクセス。アクセス制限あり。

割り当てられたドメインのドメインエイリアスを作成

ユーザーに割り当てられたドメインのエイリアスを作成します。アクセス制限あり。

割り当てられたドメインのドメインエイリアスを編集

ユーザーに割り当てられたドメインのエイリアスを編集します。アクセス制限あり。

割り当てられたドメインのドメインエイリアスを削除

ユーザーに割り当てられたドメインのエイリアスを削除します。アクセス制限あり。

割り当てられたドメインのエイリアスを表示

ユーザーに割り当てられたドメインのエイリアスを表示します。

割り当てられたドメインに追加のエディターを割り当て

ドメインにコンテンツエディターを割り当てることを許可します。アクセス制限あり。

任意のドメインに追加のエディターを割り当て

任意のドメインにエディターを割り当てることを許可します。アクセス制限あり。

任意のドメインに公開

任意のドメインにコンテンツを公開することを許可します。

割り当てられた任意のドメインにコンテンツを公開

ユーザーに割り当てられたドメインにコンテンツを公開することを許可します。

割り当てられたドメインで任意のコンテンツを作成

割り当てられたドメインで任意のコンテンツタイプを作成します。

割り当てられたドメインで任意のコンテンツを編集

割り当てられたドメインで任意のコンテンツを編集します。

割り当てられたドメインで任意のコンテンツを削除

割り当てられたドメインで任意のコンテンツを削除します。

割り当てられたドメインで未公開コンテンツを表示

割り当てられたドメインで未公開コンテンツを表示します。アクセス制限あり。

Domain Config UI 設定を管理

管理者がドメイン固有の設定に使用できるフォームを決定することを許可します。アクセス制限あり。

すべてのサイトのデフォルト設定を設定

ドメイン管理者が設定のデフォルト値を設定することを許可します。アクセス制限あり。

ドメイン固有の設定を翻訳

ドメイン管理者が言語固有の設定フォームを使用することを許可します。アクセス制限あり。

ドメイン固有の設定を管理

ドメイン管理者が管理するドメイン固有の設定フォームを使用することを許可します。アクセス制限あり。

ドメインコンテンツページにアクセス

関連コンテンツ概要ページにアクセスします。

ドメインエディターページにアクセス

関連エディター概要ページにアクセスします。

Hooks 4
hook_domain_request_alter

リクエストネゴシエーション中にモジュールがアクティブドメインを変更できるようにします。

hook_domain_validate_alter

モジュールがドメインホスト名の検証エラーを変更または追加できるようにします。

hook_domain_references_alter

モジュールがエンティティ参照フィールドで利用可能なドメイン参照オプションを変更できるようにします。

hook_domain_source_exclude_routes_options_alter

モジュールが Domain Source のリンク書き換えから除外できるルートのリストを変更できるようにします。

Drush Commands 17
drush domain:list

サイトのアクティブドメインを一覧表示します。

drush domain:add

サイトに新しいドメインを追加します。

drush domain:delete

サイトからドメインを削除します。

drush domain:default

デフォルトドメインを設定します。

drush domain:disable

ドメインを非アクティブ化します。

drush domain:enable

ドメインをアクティブ化します。

drush domain:name

ドメインのラベルを変更します。

drush domain:scheme

ドメインの URL スキームを変更します。

drush domain:test

ドメインの適切な HTTP 応答をテストします。

drush domain:info

サイトのドメインに関する一般情報を一覧表示します。

drush domain:replace

ドメインホスト名の文字列を置換します。

drush domain:generate

テスト用のドメインを生成します。

drush domain-alias:list

すべてのドメインエイリアスを一覧表示します。

drush domain-alias:add

新しいドメインエイリアスを追加します。

drush domain-alias:delete

ドメインエイリアスを削除します。

drush domain-alias:delete-bulk

複数のエイリアスを削除します。

drush domain-alias:update

ドメインエイリアスを更新します。

Troubleshooting 8
クロスドメインログインが機能しない

sites/default/services.yml の cookie_domain 値をサイトのルートホスト名に一致するように設定します(例:cookie_domain: '.example.com')。これにはすべてのドメインが共通の親ドメインを共有する必要があります。

設定の変更がドメインに表示されない

services.yml の required_cache_contexts に url.site を追加します。変更後にキャッシュをクリアします。設定オーバーライドが正しい命名パターン domain.config.DOMAIN_ID.config_name に従っていることを確認します。

ドメイン間でエンティティ参照フィールドを使用するときに AJAX エラーが発生する

services.yml で cors.config.enabled を true に設定して CORS を有効にします。allowedOrigins にドメインを含めるか、すべてのオリジンに ['*'] を使用します。

ドメインリダイレクトが機能しない

settings.php の trusted_host_patterns にすべてのドメインとエイリアスが追加されていることを確認します。Domain は信頼リストにないホストへのリダイレクトを拒否します。

期待するドメインにコンテンツが表示されない

コンテンツの Domain Access フィールド値を確認します。Domain Access を使用している場合、設定変更後に /admin/reports/status/rebuild でノードアクセス権限を再構築します。

ドメインを作成できない - ホスト名の検証に失敗する

ドメイン DNS がまだ設定されていない場合は、「サーバー応答をテスト」チェックボックスをオフにします。または、サーバーが HTTP 経由でドメインホスト名に到達できることを確認します。

ドメインエイリアスがマッチしない

エイリアスの並び順を確認します。より具体的なパターンはより低い重みを持つ必要があります。ワイルドカードマッチングは Domain Alias README に記載されている特定の優先順位に従います。

Views がドメインで正しくフィルタリングされない

正しい Views アクセスハンドラ(domain、domain_access_content、または domain_access_editor)が設定されていることを確認します。ドメインフィールドに適切なコンテキストフィルターまたは引数を追加します。

Security Notes 7
  • 「アクセス制限」とマークされたすべての権限は機密性が高いと見なされ、信頼できるロールにのみ付与する必要があります。
  • クロスドメイン AJAX 用の CORS の有効化にはセキュリティ上の影響があります - 有効にする前にドキュメントを確認してください。
  • 「非アクティブドメインにアクセス」権限はドメイン表示制限のバイパスを許可します - 管理者にのみ付与してください。
  • ドメイン設定オーバーライドはセキュリティに敏感な設定を変更できます - 「use domain config ui」権限を適切に制限してください。
  • クロスドメインログインはドメイン間でセッション Cookie を共有します - 有効にする前にすべてのドメインが管理下にあることを確認してください。
  • 悪意のあるドメインへのリダイレクト攻撃を防ぐために、settings.php で常に trusted_host_patterns を設定してください。
  • 「administer domains」権限はすべてのドメイン機能に対する完全な制御を付与します - ドメイン操作においてサイト管理者アクセスと同等です。