Domain
Domain モジュールスイートは、単一のインストールとデータベースから、ドメイングループ間でユーザー、コンテンツ、設定を共有できます。
domain
概要
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 モジュールのグローバル設定を構成します。
/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
保存されたすべてのドメイン固有の設定オーバーライドを、検査、有効化/無効化、削除のオプションとともに表示します。
/admin/config/domain/domain_source
Domain Source のリンク書き換えから除外するルートとパスを構成します。
/admin/content/domain-content
割り当てられたドメイン別にコンテンツを確認します。ドメイン割り当てでフィルタリングされた Views ベースのコンテンツ概要ページを提供します。
/admin/content/domain-editors
割り当てられたドメイン別にユーザーを確認します。ドメインエディター割り当てでフィルタリングされた Views ベースのユーザー概要ページを提供します。
権限 31
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 に従っていることを確認します。
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 アクセスハンドラ(domain、domain_access_content、または domain_access_editor)が設定されていることを確認します。ドメインフィールドに適切なコンテキストフィルターまたは引数を追加します。
Security Notes 7
- 「アクセス制限」とマークされたすべての権限は機密性が高いと見なされ、信頼できるロールにのみ付与する必要があります。
- クロスドメイン AJAX 用の CORS の有効化にはセキュリティ上の影響があります - 有効にする前にドキュメントを確認してください。
- 「非アクティブドメインにアクセス」権限はドメイン表示制限のバイパスを許可します - 管理者にのみ付与してください。
- ドメイン設定オーバーライドはセキュリティに敏感な設定を変更できます - 「use domain config ui」権限を適切に制限してください。
- クロスドメインログインはドメイン間でセッション Cookie を共有します - 有効にする前にすべてのドメインが管理下にあることを確認してください。
- 悪意のあるドメインへのリダイレクト攻撃を防ぐために、settings.php で常に trusted_host_patterns を設定してください。
- 「administer domains」権限はすべてのドメイン機能に対する完全な制御を付与します - ドメイン操作においてサイト管理者アクセスと同等です。