URL の外部化

AEMの​Externalizer​は、リソースパス(例えば、/path/to/my/page)を外部URLと絶対URL(例えば、https://www.mycompany.com/path/to/my/page)に埋め込みます。

AEM as a Cloud Serviceインスタンスは、外部から表示されるURLを認識できず、場合によってはリクエスト範囲外でリンクを作成する必要があるので、このサービスは、外部URLを設定して作成するための一元的な場所を提供します。

この記事では、Externalizerサービスの設定方法と使用方法を説明します。 このサービスの技術的な詳細については、Javadocsを参照してください。

Externalizerのデフォルトの動作とのオーバーライド方法

Externalizerサービスは、初期設定でauthor-p12345-e6789.adobeaemcloud.compublish-p12345-e6789.adobeaemcloud.comなどの値を持ちます。

このような値を上書きするには、 AEM用のOSGiのCloud Service🔗の説明に従って、Cloud Manager環境変数を使用し、事前定義されたAEM_CDN_DOMAIN_AUTHOR変数とAEM_CDN_DOMAIN_PUBLISH変数を設定します。

Externalizerサービスの設定

Externalizerサービスを使用すると、リソースパスにプログラム的にプレフィックスを付けるのに使用できるドメインを一元的に定義できます。 Externalizerサービスは、1つのドメインを持つアプリケーションにのみ使用する必要があります。

メモ

AEM as aCloud ServiceにOSGi設定を適用する場合と同様に、次の手順をローカル開発者インスタンスで実行し、デプロイメント用にプロジェクトコードにコミットする必要があります。

Externalizer サービスのドメインマッピングを定義するには:

  1. 次の方法でConfiguration Managerに移動します。

    https://<host>:<port>/system/console/configMgr

  2. Day CQ Link Externalizer​をクリックして、設定ダイアログボックスを開きます。

    Externalizer OSGiの設定

    メモ

    設定への直接リンクはhttps://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImplです。

  3. ドメイン​マッピングを定義します。 マッピングは、ドメイン、スペース、ドメインを参照するコードで使用できる一意の名前で構成されます。

    <unique-name> [scheme://]server[:port][/contextpath]

    ここで、

    • scheme は通常、httpまたはhttpsですが、別のプロトコルを指定することもできます。

      • httpsリンクを強制するには、httpsを使用することをお勧めします。
      • URLの外部化を要求する際に、クライアントコードがスキームを上書きしない場合に使用されます。
    • server はホスト名(ドメイン名またはipアドレス)です。

    • port (オプション)はポート番号です。

    • contextpath (オプション)は、AEMがWebアプリとして別のコンテキストパスでインストールされている場合にのみ設定されます。

    例:production https://my.production.instance

    次のマッピング名は事前に定義されており、AEMがこれらを利用するため常に設定する必要があります。

    • local — ローカルインスタンス
    • author — オーサリングシステムのDNS
    • publish - 公開 Web サイトの DNS
    メモ

    カスタム設定を使用すると、productionstagingなどの新しいカテゴリや、my-internal-webserviceなどの外部のAEM以外のシステムを追加できます。 このようなURLをプロジェクトのコードベースの異なる場所にハードコーディングするのを防ぐのに役立ちます。

  4. 保存」をクリックして変更を保存します。

Externalizerサービスの使用

ここでは、Externalizer サービスの使用方法に関するいくつかの例を紹介します。

メモ

HTMLのコンテキストでは絶対リンクを作成しないでください。 したがって、このユーティリティは、このような場合には使用しないでください。

  • 「publish」ドメインを付与してパスを外部化する:

    String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
    

    ドメインマッピングが次のような場合:

    • publish https://www.website.com

    • myExternalizedUrl 値で終わる

    • https://www.website.com/contextpath/my/page.html

  • 「author」ドメインを付与してパスを外部化するには:

    String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
    

    ドメインマッピングが次のような場合:

    • author https://author.website.com

    • myExternalizedUrl 値で終わる

    • https://author.website.com/contextpath/my/page.html

  • 「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

ヒント

他の例については、関連する Javadoc を参照してください。

このページ