Wat zijn AEM Dispatcher rewrite-regels? Onze AEM Gecertificeerde expert belicht de Top 5 geavanceerde manieren om de Dispatcher te gebruiken voor productie en ontwikkeling.
Nu u weet hoe u de basisparameters van de dispatcher kunt aanpassen, is het tijd om dieper in te gaan op de geavanceerde instellingen. Deze instellingen zijn nodig om de productieomgeving te verfijnen en zullen ook nuttig zijn tijdens het ontwikkelingsproces.
Hieronder beschrijf ik enkele nuttige tools voor het geavanceerd gebruik van de dispatcher:
- tools voor statische webservers
- rewrite-module
- AEM tools voor mappings
- repository mappings tree /etc/map
- ResourceProvider Interface
Rewrite-module
U kunt de rewrite-module inschakelen door de volgende regel in uw httpd.conf-bestand te decommentariëren:
LoadModule rewrite_module modules/mod_rewrite.so
Initiële instellingen voor de rewrite-module kunnen er als volgt uitzien:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteLog "logs/rewrite.log"
RewriteLogLevel 9
# your rule 1
# your rule 2
…
# your rule n
</IfModule>
Hier is een eenvoudig voorbeeld van het gebruik van de rewrite-module:
RewriteRule ^/en(.*)\.html$ /content/geometrixx/en$1.html [R]
Deze rewrite-regel zorgt voor een externe omleiding.
Gedetailleerde en nuttige documentatie: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
Repository mappings tree /etc/map
Resource mapping wordt gebruikt om redirects, vanity URL’s en virtuele hosts voor AEM te definiëren:
- /etc/map – resource mappings tree;
- /etc/map/http – resource mappings voor http-aanvragen.
Mapping-definities van uw AEM-instantie zijn te vinden op: http://host:port/system/console/jcrresolver
Voorbeeld: mapping die elke aanvraag naar http://localhost:4503 voorziet van het /content-voorvoegsel:
- Maak een knooppunt aan onder /etc/map/http met het type “sling:Mapping” en de naam “localhost_any”;
- Voeg eigenschappen toe aan dit knooppunt:
- Naam “sling:match”, type “String”, waarde “localhost.4503/”;
- Naam “sling:internalRedirect”, type “String”, waarde “/content/”.
Deze mapping behandelt een verzoek zoals http://localhost:4503/geometrixx/en/products.html alsof http://localhost:4503/content/geometrixx/en/products.html wordt aangevraagd. Dit voorbeeld verbreekt verzoeken aan clientlibs en aan andere resources die buiten de /content resourcestructuur zijn geplaatst.
Gedetailleerde en nuttige documentatie:
https://docs.adobe.com/docs/en/cq/5-6-1/deploying/resource_mapping.html
https://sling.apache.org/documentation/the-sling-engine/mappings-for-resource-resolution.html
ResourceProvider-interface
U kunt de ResourceProvider-interface gebruiken om uw eigen resourcestructuren te creëren.
public interface ResourceProvider {
Resource getResource(ResourceResolver var1, String var2);
Iterator<Resource> listChildren(Resource var1);
}
U kunt rootpaden instellen voor uw implementatie van de ResourceProvider:
@Properties({
@Property(
label = "Root paths",
description = "Root paths this Sling Resource Provider will respond to",
name = ResourceProvider.ROOTS,
value = {"/content/mount/samples"})
})
Gedetailleerde en nuttige documentatie: https://sling.apache.org/documentation/the-sling-engine/resources.html
Samenvatting
De drie hierboven genoemde tools bieden aanvullende verbeteringen bij het gebruik van de dispatcher:
- Httpd rewrite-module;
- AEM mappings-structuur;
- ResourceProvider-interface.
We hebben deze tools slechts kort besproken. Als u ze effectief wilt gebruiken, moet u de bijbehorende gedetailleerde documentatie voor elke tool bestuderen.
Veelgestelde vragen
Hoe herstart u de dispatcher in AEM?
AEM Dispatcher is een module die draait op enterprise-klasse webservers. Op bijvoorbeeld Apache httpd 2.4.x kan de volgende opdracht worden gebruikt om deze te herstarten: sudo /etc/init.d/apache2 restart.
Wat is het verschil tussen rewrite en redirect?
URL-manipulaties zoals rewrites en redirects kunnen worden gebruikt om de interne structuur van een website te verbergen, URL’s gebruiksvriendelijk te maken en verouderde URL’s af te handelen. Bij rewriting wijzigt de server de aangevraagde URL direct op basis van vooraf gedefinieerde regels, voordat de inhoud die aan de gewijzigde URL is gekoppeld, aan de bezoeker wordt geretourneerd. De oorspronkelijke URL blijft zichtbaar voor de bezoeker. Bij redirecting stuurt de server een antwoord naar de browser van de bezoeker, waarin deze wordt geïnstrueerd een andere URL aan te vragen. De browser vraagt vervolgens de nieuwe URL aan en de bezoeker ziet de pagina die aan de nieuwe URL is gekoppeld.
Wat is de ETC map in AEM?
De /etc/map/-map in AEM wordt gebruikt om definities voor interne resource-mapping aan te maken. De submap /etc/map/http bevat bijvoorbeeld mappings voor het HTTP-protocol die het mogelijk maken om redirects, vanity-URL’s en virtuele hosts voor AEM te definiëren.
Hoe wordt URL-verkorting gedaan in AEM?
URL-verkorting kan worden gedaan met behulp van Sling Resource Resolver Factory als u eenvoudige regels wilt gebruiken, zoals het verwijderen van talrijke submappen uit de URL-string, of met behulp van Sling Mapping voor complexere scenario’s.
Hoe werkt Sling-resolutie in AEM?
Apache Sling wordt gebruikt om inkomende aanvraag-URL’s te matchen met specifieke content in de JCR-repository. De repository heeft een hiërarchische structuur en elk stukje content daarin heeft een lang en uniek resource-pad. Om de overeenkomende content te bepalen, past Apache Sling een set vooraf gedefinieerde regels en resource-type filters toe.