Show Menu
トピック×

URL の外部化

In AEM, the Externalizer is an OSGI service that allows you to programmatically transform a resource path (e.g. /path/to/my/page ) into an external and absolute URL (for example, https://www.mycompany.com/path/to/my/page ) by prefixing the path with a pre-configured DNS.
インスタンスがWebレイヤーの背後で実行されている場合は、外部から表示されるURLを知ることができないので、リクエストスコープの外部にリンクを作成する必要がある場合もあるので、このサービスは外部URLを設定して構築するための一元的な場所です。
このページでは、 Externalizer サービスの設定方法と使用方法について説明します。詳しくは、関連する Javadoc を参照してください。

Externalizer サービスの設定

The Externalizer service allows you to centrally define multiple domains that can be used to programmatically prefix resource paths. Each domain is identified by a unique name that is used to programmatically reference the domain.
Externalizer サービスのドメインマッピングを定義するには:
  1. Navigate to the configuration manager via Tools , then Web Console , or enter:
    https://<host>:<port>/system/console/configMgr
  2. Click Day CQ Link Externalizer to open the configuration dialog box.
    The direct link to the configuration is https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
  3. Define a Domains mapping: a mapping consists of a unique name that can be used in the code to reference the domain, a space and the domain:
    <unique-name> [scheme://]server[:port][/contextpath]
    ここで、
    • スキームは 、通常はhttpまたはhttpsですが、ftpなども使用できます。
      • 必要に応じてhttpsを使用し、HTTPSリンクを強制します。
      • URLの外部化を要求する際に、クライアントコードがスキームを上書きしない場合に使用されます。
    • serverは 、ホスト名(ドメイン名またはIPアドレス)です。
    • port (オプション)はポート番号です。
    • contextpath (オプション)は、AEMがWebアプリケーションとして別のコンテキストパスの下にインストールされている場合にのみ設定されます。
    次に例を示します。 production https://my.production.instance
    次のマッピング名は事前に定義されており、AEMが依存するために常に設定する必要があります。
    • local — ローカルインスタンス
    • author — オーサリングシステムのDNS
    • publish - 公開 Web サイトの DNS
    カスタム設定を使用すると、新しいカテゴリ(例:)や、AEM以外の production 外部シ staging ステム(例:)を追加できま my-internal-webservice す。 プロジェクトのコードベース内の異なる場所にまたがるこのようなURLのハードコーディングを避けると便利です。
  4. 保存 」をクリックして変更を保存します。
Adobe recommends that you add the configuration to the repository .

Externalizer サービスの使用

This section shows a few examples of how the Externalizer service can be used:
  1. JSP で Externalizer サービスを取得する:
    Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
    
    
  2. 「publish」ドメインを付与してパスを外部化する:
    String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
    
    
    ドメインマッピングの前提:
    • publish https://www.website.com
    myExternalizedUrl は次の値で終わります。
    • https://www.website.com/contextpath/my/page.html
  3. 「author」ドメインを付与してパスを外部化するには:
    String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
    
    
    ドメインマッピングの前提:
    • author https://author.website.com
    myExternalizedUrl は次の値で終わります。
    • https://author.website.com/contextpath/my/page.html
  4. 「local」ドメインを付与してパスを外部化するには:
    String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
    
    
    ドメインマッピングの前提:
    • local https://publish-3.internal
    myExternalizedUrl は次の値で終わります。
    • https://publish-3.internal/contextpath/my/page.html
  5. 他の例については、関連する Javadoc を参照してください。