Domain Country Path
Domainモジュールを拡張し、国別のURLパスプレフィックスをサポートします。複数のドメインが同じホスト名を共有しながら、パスプレフィックスで区別できるようになります。
country_path
インストール
composer require 'drupal/country_path:8.x-1.10'
概要
Domain Country Pathは、多国籍ウェブサイトで国や地域固有のURLパスプレフィックスを有効にするDomainモジュールの拡張機能です。各国ごとに異なるホスト名やサブドメインを使用する代わりに(例:usa.example.com、france.example.com)、このモジュールを使用すると、別々のドメインコンテキストを維持しながら、パスプレフィックス(例:example.com/usa、example.com/france)を使用できます。
このモジュールは、インバウンド(内部ルーティング用に国プレフィックスを除去)とアウトバウンド(生成されたURLにプレフィックスを追加)の両方でURL処理を自動的に行います。また、国パスが使用されている場合に言語検出を適切に処理するカスタム言語ネゴシエーションプラグインも提供し、国パスと言語プレフィックスがシームレスに連携できるようにします(例:example.com/usa/en、example.com/france/fr)。
Domain Country Pathは、Domain Aliasモジュールが利用可能な場合は統合し、エイリアスパターンを拡張して国パスサフィックスをサポートします。また、アクティブな国/ドメインに基づく適切なCache変動のための専用Cacheコンテキスト(url.country)も提供します。
Features
- 複数のドメインが単一のホスト名を共有できる国別URLパスプレフィックス(例:example.com/usa、example.com/france)
- 適切なDrupalルーティングのために国プレフィックスを除去する自動インバウンドパス処理
- 生成されるすべてのURLに国プレフィックスを追加する自動アウトバウンドパス処理
- 国パスプレフィックスで言語検出を処理するカスタム言語ネゴシエーションプラグイン(country-path-language-url)
- アクティブな国/ドメインに基づく適切なCache変動のためのCacheコンテキスト(url.country)
- 国対応のエイリアスパターンのためのDomain Aliasモジュールとの統合
- 国パス設定フィールドを持つ拡張されたDomain Entityフォーム
- ホスト名に加えてURLパスプレフィックスに基づく自動ドメイン検出
Use Cases
単一ホスト名での多国籍ECサイト
ECサイトが単一のホスト名(shop.example.com)から異なる国(アメリカ、フランス、ドイツ)にサービスを提供したいが、国固有のコンテンツと設定が必要な場合。Domain Country Pathを使用して、shop.example.com/usa、shop.example.com/france、shop.example.com/deとしてドメインを設定します。各国は同じホスト名を共有しながら、コンテンツの可視性、価格設定、設定のための独自のドメインコンテキストを持ちます。
言語バリエーションを持つ地域別コンテンツ
企業のウェブサイトが複数の言語で異なる地域にコンテンツを提供する必要がある場合。例えば、shop.example.com/usa/en(アメリカ英語)、shop.example.com/france/fr(フランス語)、shop.example.com/france/en(フランス英語)。このモジュールは国プレフィックスを処理し、Drupalの言語システムが言語プレフィックスを処理することで、クリーンなURL構造を実現します。
多地域サイトの簡素化されたDNS管理
国固有のサブドメイン(usa.example.com、france.example.com)のために複数のDNSレコードを管理する代わりに、example.comの単一のDNSエントリがパスプレフィックスを通じてすべての国にサービスを提供します。これにより、各国の個別のドメインコンテキストを維持しながら、SSL証明書管理とDNS設定が簡素化されます。
Tips
- ドメインフォームで国パス付きのホスト名を入力する場合は、スラッシュで区切ります(例:example.com/usa)。モジュールはこれを自動的に解析します。
- 国パスプレフィックスはそのドメインのすべてのURLの最初のセグメントになり、言語プレフィックスよりも前に表示されます。
- ワイルドカード(*)で終わるDomain Aliasパターンには、国パスが自動的に追加されるため、含めないでください。
- このモジュールは「url.country」Cacheコンテキストを提供します - 国によって異なるコンテンツをレンダリングする際にカスタムコードでこれを使用してください。
- 最高のパフォーマンスを得るために、url.country Cacheコンテキストでページキャッシングを有効にして、国ごとにページをキャッシュしてください。
Technical Details
Admin Pages 2
/admin/config/domain
各ドメインのホスト名と一緒に国パスサフィックスを表示する拡張されたドメイン一覧。リストには、そのドメインコンテキストに移動するクリック可能なリンクとして、完全なパス(例:example.com/usa)を持つドメインが表示されます。
/admin/config/domain/add
国パスサフィックス付きのホスト名を受け入れる拡張されたドメイン作成フォーム。「example.com/usa」のようなホスト名を入力すると、モジュールは自動的にホスト名(example.com)と国パス(usa)を解析し、個別に保存します。
Hooks 5
hook_domain_request_alter
パスベースの国プレフィックスをサポートするためにドメイン検出を変更します。URLパスで国プレフィックスをチェックし、見つかった場合は対応するドメインをロードします。
hook_entity_type_build
ホスト名検証のためのpreSave動作を変更するため、Domain EntityクラスをCountryPathDomainでオーバーライドします。
hook_entity_type_alter
国パス解析をサポートするカスタムフォームでDomainおよびDomain Alias Entityフォームハンドラーをオーバーライドします。
hook_form_alter
ホスト名フィールドで国パス入力をサポートするために、ドメインおよびドメインエイリアスフォームを変更します。
hook_language_types_info_alter
適切な多言語サポートのために、country-path-language-urlネゴシエーターを固定有効なURL言語ネゴシエーターに追加します。
Troubleshooting 4
ドメインが国パスで正しく設定されていることを確認してください。ドメインを編集し、パスサフィックス付きのホスト名(例:example.com/usa)を入力します。ドメイン一覧にドメインが完全なパスで正しく表示されていることを確認してください。
Languageモジュールがインストールされており、「Country Path Language Handler URL」ネゴシエーターが有効になっていることを確認してください。モジュールはインストール時に自動的にこれを有効化しますが、/admin/config/regional/language/detectionで確認できます。
国パスを持つドメインのエイリアスを作成する場合、ワイルドカードでないパターンには国パスサフィックスを含めてください(例:example.org/usa)。ワイルドカードパターン(例:*.example.com)は、国パスが自動的に追加されるため、含めないでください。
「url.country」Cacheコンテキストが適用されていることを確認してください。モジュールはこれをアウトバウンドURLに自動的に追加します。カスタムキャッシングロジックがある場合は、Cacheコンテキストに「url.country」を追加してください。
Security Notes 3
- モジュールは無効な文字やセキュリティ問題を防ぐために国パスパターンを検証します。
- ホスト名検証は、国パスの区切りのためにのみスラッシュを許可するように拡張されています。
- このモジュールは新しい権限を追加しません - アクセス制御は既存のDomainモジュールの権限に依存します。