Externalisieren von URLs externalizing-urls
In Adobe Experience Manager (AEM) ist der Externalizer ein OSGi-Dienst, 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.
Dieser Dienst bietet einen zentralen Ort für die Konfiguration und Erstellung von externen URLs, weil eine Instanz ihre extern sichtbare URL nicht kennen kann, wenn sie hinter einer Web-Layer läuft, und weil manchmal ein Link außerhalb des Anfrageumfangs erstellt werden muss.
Auf dieser Seite wird beschrieben, wie Sie den Externalizer-Dienst konfigurieren und verwenden. Weitere Informationen finden Sie unter Javadocs.
Konfigurieren des Externalizer-Diensts configuring-the-externalizer-service
Der Externalizer-Dienst ermöglicht es Ihnen, mehrere Domains zentral zu definieren, die für das programmgesteuerte Voranstellen von Präfixen für Ressourcenpfade verwendet werden können. Alle Domains werden anhand eines eindeutigen Namens zum programmgesteuerten Verweisen auf die Domain identifiziert.
Definieren Sie eine Domain-Zuordnung für den Externalizer-Service wie folgt:
-
Wechseln Sie zum Konfigurations-Manager über Tools > Web-Konsole oder geben Sie Folgendes ein:
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 einer 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:
-
Schema ist normalerweise „http“ oder „https“, kann aber auch z. B. „ftp“ sein.
- Verwenden Sie bei Bedarf HTTPS, um HTTPS-Links zu erzwingen.
- Es wird verwendet, wenn der Clientcode 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 Portnummer.
-
Kontextpfad (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-Diensts using-the-externalizer-service
Dieser Abschnitt zeigt einige Beispiele dafür, wie der Externalizer-Dienst verwendet werden kann:
-
Den Externalizer-Dienst rufen Sie in JSP wie folgt ab:
code language-java Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
-
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
-
Weitere Beispiele finden Sie in den Javadocs.