Externalisieren von URLs externalizing-urls
In AEM ist der Externalizer ein OSGi-Service, mit dem Sie einen Ressourcenpfad (z. B. /path/to/my/page
) programmgesteuert in eine externe und absolute URL (z. B. https://www.mycompany.com/path/to/my/page
) umwandeln können, indem der Pfad mit einem vorkonfigurierten DNS-Präfix versehen wird.
Da eine AEM as a Cloud Service-Instanz ihre extern sichtbare URL nicht kennen kann und manchmal ein Link außerhalb des Anfragebereichs erstellt werden muss, bietet dieser Service eine zentrale Stelle, an der diese externen URLs konfiguriert und erstellt werden können.
Auf dieser Seite wird beschrieben, wie Sie den Externalizer-Service konfigurieren und verwenden. Technische Details zum Service finden Sie unter Javadocs.
Standardverhalten des Externalizers und Überschreiben default-behavior
Standardmäßig ordnet der Externalizer-Service einige der Domain-Bezeichner den absoluten URL-Präfixen zu, die mit den für die Umgebung generierten AEM-Service-URLs übereinstimmen, z. B. author https://author-p12345-e6789.adobeaemcloud.com
und publish https://publish-p12345-e6789.adobeaemcloud.com
. Die Basis-URLs für jede dieser Standard-Domains werden aus den vom Cloud Manager definierten Umgebungsvariablen gelesen.
Als Referenz ist die standardmäßige OSGi-Konfiguration für com.day.cq.commons.impl.ExternalizerImpl.cfg.json
effektiv:
{
"externalizer.domains": [
"local $[env:AEM_EXTERNALIZER_LOCAL;default=http://localhost:4502]",
"author $[env:AEM_EXTERNALIZER_AUTHOR;default=http://localhost:4502]",
"publish $[env:AEM_EXTERNALIZER_PUBLISH;default=http://localhost:4503]",
"preview $[env:AEM_EXTERNALIZER_PREVIEW;default=http://localhost:4503]"
]
}
local
, author
, preview
und publish
in der OSGi-Konfiguration mit den ursprünglichen $[env:...]
-Werten wie oben aufgeführt beibehalten werden.com.day.cq.commons.impl.ExternalizerImpl.cfg.json
für AEM as a Cloud Service, die eine dieser standardmäßigen Domain-Zuordnungen auslässt, kann zu unvorhersehbarem Anwendungsverhalten führen.Um die Werte preview
und publish
zu überschreiben, verwenden Sie Cloud Manager-Umgebungsvariablen, wie im Artikel Konfigurieren von OSGi für AEM as a Cloud Service beschrieben, und legen Sie die vordefinierten Variablen AEM_CDN_DOMAIN_PUBLISH
und AEM_CDN_DOMAIN_PREVIEW
fest.
Konfigurieren des Externalizer-Service configuring-the-externalizer-service
Der Externalizer-Service ermöglicht es Ihnen, zentral mehrere Domains zu definieren, die für das programmgesteuerte Voranstellen in Ressourcenpfaden verwendet werden können. Der Externalizer-Service sollte nur für Programme mit einer einzelnen Domain verwendet werden.
Definieren Sie eine Domain-Zuordnung für den Externalizer-Service wie folgt:
-
Gehen Sie zum Configuration Manager über:
https://<host>:<port>/system/console/configMgr
-
Klicken Sie auf Day CQ Link Externalizer, um das Konfigurationsdialogfeld zu öffnen.
note note NOTE Der Direkt-Link zur Konfiguration lautet https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
-
Definieren Sie eine Domain-Zuordnung. Eine Zuordnung besteht aus einem eindeutigen Namen, der im Code verwendet werden kann, um auf die Domain, ein Leerzeichen und die Domain zu verweisen:
<unique-name> [scheme://]server[:port][/contextpath]
Dabei gilt:
-
scheme
ist normalerweise HTTP oder HTTPS, kann aber ein anderes Protokoll sein.- Adobe empfiehlt die Verwendung von HTTPS, um HTTPS-Links zu erzwingen.
- Es wird verwendet, wenn der Client-Code das Schema nicht überschreibt, wenn er die Externalisierung einer URL anfordert.
-
server
ist der Host-Name (kann ein Domain-Name oder eine IP-Adresse sein). -
port
(optional) ist die Port-Nummer. -
contextpath
(optional) wird nur festgelegt, wenn AEM als Web-App unter einem anderen Kontextpfad installiert wird.
Beispiel:
production https://my.production.instance
Die folgenden Zuordnungsnamen sind vordefiniert und müssen immer festgelegt werden, da AEM auf sie angewiesen ist:
local
– die lokale Instanzauthor
– das DNS des Bearbeitungssystemspublish
– das DNS der öffentlichen Website
note note NOTE Mit einer benutzerdefinierten Konfiguration können Sie eine neue Kategorie hinzufügen, z. B. production
,staging
oder sogar externe Nicht-AEM-Systeme wiemy-internal-webservice
. Es ist nützlich, die Hartkodierung solcher URLs an verschiedenen Stellen in der Code-Basis eines Projekts zu vermeiden. -
-
Klicken Sie auf Speichern, um Ihre Änderungen zu speichern.
Verwenden des Externalizer-Service using-the-externalizer-service
Dieser Abschnitt zeigt einige Beispiele dafür, wie der Externalizer-Service verwendet werden kann.
-
Einen Pfad mit der publish-Domain externalisieren Sie wie folgt:
code language-java String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Angenommen, die Domain-Zuordnung:
-
publish https://www.website.com
-
myExternalizedUrl
endet mit dem Wert: -
https://www.website.com/contextpath/my/page.html
-
-
So externalisieren Sie einen Pfad mit der Domain „author“:
code language-java String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Angenommen, die Domain-Zuordnung:
-
author https://author.website.com
-
myExternalizedUrl
endet mit dem Wert: -
https://author.website.com/contextpath/my/page.html
-
-
So externalisieren Sie einen Pfad mit der Domain „local“:
code language-java String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
Angenommen, die Domain-Zuordnung:
-
local https://publish-3.internal
-
myExternalizedUrl
endet mit dem Wert: -
https://publish-3.internal/contextpath/my/page.html
-