{"id":23441,"date":"2016-09-02T13:24:00","date_gmt":"2016-09-02T13:24:00","guid":{"rendered":"https:\/\/site.axamit.com\/?p=631"},"modified":"2026-06-23T08:02:01","modified_gmt":"2026-06-23T08:02:01","slug":"czym-sa-reguly-przepisywania-aem-dispatcher","status":"publish","type":"post","link":"https:\/\/axamit.com\/pl\/blog\/adobe-experience-manager\/czym-sa-reguly-przepisywania-aem-dispatcher\/","title":{"rendered":"Czym s\u0105 regu\u0142y przepisywania AEM Dispatcher?"},"content":{"rendered":"<div class=\"custom-toc\"><ul><li class=\"h2-toc\"><a href=\"#rewrite-module\">Modu\u0142 przepisywania<\/a><\/li><li class=\"h2-toc\"><a href=\"#repository-mappings-tree-etc-map\">Drzewo mapowa\u0144 repozytorium \/etc\/map<\/a><\/li><li class=\"h2-toc\"><a href=\"#resourceprovider-interface\">Interfejs ResourceProvider<\/a><\/li><li class=\"h2-toc\"><a href=\"#summary\">Podsumowanie<\/a><\/li><li class=\"h2-toc\"><a href=\"#faq\">FAQ<\/a><\/li><\/ul><\/div>\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Zobacz tak\u017ce:<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/axamit.com\/blog\/adobe-experience-manager\/aem-dispatcher\/\" data-type=\"post\" data-id=\"2473\">Cz\u0119\u015b\u0107 1: Kr\u00f3tki przegl\u0105d dyspozytora i jego cel\u00f3w<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/axamit.com\/blog\/adobe-experience-manager\/dispatcher-cache\/\" data-type=\"post\" data-id=\"2487\">Cz\u0119\u015b\u0107 2. Pocz\u0105tkowe ustawienia w\u0142\u0105czania pami\u0119ci podr\u0119cznej<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/axamit.com\/blog\/adobe-experience-manager\/dispatcher-clear-cache\/\" data-type=\"post\" data-id=\"2488\">Cz\u0119\u015b\u0107 3. Uniewa\u017cnianie pami\u0119ci podr\u0119cznej<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Czym s\u0105 regu\u0142y przepisywania AEM Dispatcher? Nasz certyfikowany ekspert AEM przedstawia 5 zaawansowanych sposob\u00f3w wykorzystania Dispatchera w \u015brodowisku produkcyjnym i deweloperskim.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Teraz, gdy wiesz ju\u017c, jak dostosowa\u0107 podstawowe parametry dyspozytora, nadszed\u0142 czas, aby zag\u0142\u0119bi\u0107 si\u0119 w ustawienia zaawansowane. Te ustawienia b\u0119d\u0105 niezb\u0119dne do precyzyjnego dostrojenia \u015brodowiska produkcyjnego, a tak\u017ce przydatne podczas procesu deweloperskiego.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Poni\u017cej opisuj\u0119 kilka przydatnych narz\u0119dzi do zaawansowanego wykorzystania dyspozytora:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>narz\u0119dzia statycznych serwer\u00f3w WWW\n<ul class=\"wp-block-list\">\n<li>modu\u0142 przepisywania<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>narz\u0119dzia AEM do mapowa\u0144\n<ul class=\"wp-block-list\">\n<li>drzewo mapowa\u0144 repozytorium \/etc\/map<\/li>\n\n\n\n<li>Interfejs ResourceProvider<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"rewrite-module\">Modu\u0142 przepisywania<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Modu\u0142 przepisywania mo\u017cna w\u0142\u0105czy\u0107, odkomentowuj\u0105c nast\u0119pny wiersz w pliku httpd.conf:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LoadModule rewrite_module modules\/mod_rewrite.so\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pocz\u0105tkowe ustawienia modu\u0142u przepisywania mog\u0105 wygl\u0105da\u0107 nast\u0119puj\u0105co:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;IfModule mod_rewrite.c&gt;\n    RewriteEngine On\n    RewriteLog \"logs\/rewrite.log\"\n    RewriteLogLevel 9\n#    your rule 1\n#    your rule 2\n    \u2026\n#    your rule n\n&lt;\/IfModule&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Oto prosty przyk\u0142ad u\u017cycia modu\u0142u przepisywania:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RewriteRule ^\/en(.*)\\.html$ \/content\/geometrixx\/en$1.html &#91;R]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ta regu\u0142a przepisywania zapewnia zewn\u0119trzne przekierowanie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Szczeg\u00f3\u0142owa i przydatna dokumentacja:\u00a0<a href=\"http:\/\/httpd.apache.org\/docs\/2.2\/mod\/mod_rewrite.html\" target=\"_blank\" rel=\"noopener\">http:\/\/httpd.apache.org\/docs\/2.2\/mod\/mod_rewrite.html<\/a><\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"repository-mappings-tree-etc-map\">Drzewo mapowa\u0144 repozytorium \/etc\/map<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mapowanie zasob\u00f3w s\u0142u\u017cy do definiowania przekierowa\u0144, adres\u00f3w URL vanity i wirtualnych host\u00f3w dla AEM:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\/etc\/map &#8211; drzewo mapowa\u0144 zasob\u00f3w;<\/li>\n\n\n\n<li>\/etc\/map\/http &#8211; mapowania zasob\u00f3w dla \u017c\u0105da\u0144 http.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Definicje mapowa\u0144 Twojej instancji AEM znajduj\u0105 si\u0119 pod adresem:\u00a0http:\/\/host:port\/system\/console\/jcrresolver<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad: mapowanie, kt\u00f3re poprzedza ka\u017cde \u017c\u0105danie do\u00a0http:\/\/localhost:4503\u00a0prefikiem \/content:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Utw\u00f3rz w\u0119ze\u0142 w \/etc\/map\/http typu \u201csling:Mapping\u201d o nazwie \u201clocalhost_any\u201d;<\/li>\n\n\n\n<li>Dodaj w\u0142a\u015bciwo\u015bci do tego w\u0119z\u0142a:\n<ul class=\"wp-block-list\">\n<li>Nazwa \u201csling:match\u201d, typ \u201cString\u201d, warto\u015b\u0107 \u201clocalhost.4503\/\u201d;<\/li>\n\n\n\n<li>Nazwa \u201csling:internalRedirect\u201d, typ \u201cString\u201d, warto\u015b\u0107 \u201c\/content\/\u201d.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">To mapowanie obs\u0142u\u017cy \u017c\u0105danie takie jak\u00a0http:\/\/localhost:4503\/geometrixx\/en\/products.html\u00a0tak, jakby \u017c\u0105dano\u00a0http:\/\/localhost:4503\/content\/geometrixx\/en\/products.html. Ten przyk\u0142ad zak\u0142\u00f3ca \u017c\u0105dania do clientlibs i innych zasob\u00f3w umieszczonych poza drzewem zasob\u00f3w \/content.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Szczeg\u00f3\u0142owa i przydatna dokumentacja:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.adobe.com\/docs\/en\/cq\/5-6-1\/deploying\/resource_mapping.html\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.adobe.com\/docs\/en\/cq\/5-6-1\/deploying\/resource_mapping.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/sling.apache.org\/documentation\/the-sling-engine\/mappings-for-resource-resolution.html\" target=\"_blank\" rel=\"noopener\">https:\/\/sling.apache.org\/documentation\/the-sling-engine\/mappings-for-resource-resolution.html<\/a><\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"resourceprovider-interface\">Interfejs ResourceProvider<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mo\u017cesz u\u017cy\u0107 interfejsu ResourceProvider, aby tworzy\u0107 w\u0142asne drzewa zasob\u00f3w.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public interface ResourceProvider {\n    Resource getResource(ResourceResolver var1, String var2);\n    Iterator&lt;Resource&gt; listChildren(Resource var1);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mo\u017cesz ustawi\u0107 \u015bcie\u017cki g\u0142\u00f3wne dla swojej implementacji ResourceProvider:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Properties({\n       @Property(\n               label = \"Root paths\",\n               description = \"Root paths this Sling Resource Provider will respond to\",\n               name = ResourceProvider.ROOTS,\n               value = {\"\/content\/mount\/samples\"})\n})\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Szczeg\u00f3\u0142owa i przydatna dokumentacja:\u00a0<a href=\"https:\/\/sling.apache.org\/documentation\/the-sling-engine\/resources.html\" target=\"_blank\" rel=\"noopener\">https:\/\/sling.apache.org\/documentation\/the-sling-engine\/resources.html<\/a><\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"summary\">Podsumowanie<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Trzy wspomniane narz\u0119dzia zapewniaj\u0105 dodatkowe usprawnienia podczas korzystania z dyspozytora:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modu\u0142 przepisywania Httpd;<\/li>\n\n\n\n<li>Drzewo mapowa\u0144 AEM;<\/li>\n\n\n\n<li>Interfejs ResourceProvider.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyjrzeli\u015bmy si\u0119 tym narz\u0119dziom tylko pobie\u017cnie. Je\u015bli chcesz ich efektywnie u\u017cywa\u0107, musisz zapozna\u0107 si\u0119 ze szczeg\u00f3\u0142ow\u0105 dokumentacj\u0105 dla ka\u017cdego z nich.<\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-do-you-restart-the-dispatcher-in-aem-\">Jak zrestartowa\u0107 dyspozytora w AEM?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">AEM Dispatcher to modu\u0142 dzia\u0142aj\u0105cy na serwerach WWW klasy korporacyjnej. Na przyk\u0142ad, na Apache httpd 2.4.x, do jego ponownego uruchomienia mo\u017cna u\u017cy\u0107 nast\u0119puj\u0105cego polecenia: sudo \/etc\/init.d\/apache2 restart.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-is-the-difference-between-rewrite-and-redirect-\">Jaka jest r\u00f3\u017cnica mi\u0119dzy przepisywaniem a przekierowaniem?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Manipulacje adresami URL, takie jak przepisywanie (rewrite) i przekierowania (redirect), mog\u0105 by\u0107 u\u017cywane do ukrywania wewn\u0119trznej struktury strony internetowej, czynienia adres\u00f3w URL przyjaznymi dla u\u017cytkownika oraz obs\u0142ugi starszych adres\u00f3w URL. Przy przepisywaniu, serwer modyfikuje \u017c\u0105dany adres URL na bie\u017c\u0105co, w oparciu o zdefiniowane wcze\u015bniej regu\u0142y, zanim zwr\u00f3ci zawarto\u015b\u0107 powi\u0105zan\u0105 ze zmodyfikowanym adresem URL odwiedzaj\u0105cemu. Oryginalny adres URL pozostaje widoczny dla odwiedzaj\u0105cego. Przy przekierowaniu, serwer wysy\u0142a odpowied\u017a do przegl\u0105darki odwiedzaj\u0105cego, instruuj\u0105c j\u0105, aby za\u017c\u0105da\u0142a innego adresu URL. Przegl\u0105darka nast\u0119pnie \u017c\u0105da nowego adresu URL, a odwiedzaj\u0105cy widzi stron\u0119 powi\u0105zan\u0105 z nowym adresem URL.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-is-the-etc-map-in-aem-\">Czym jest mapa ETC w AEM?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Folder \/etc\/map\/ w AEM s\u0142u\u017cy do tworzenia definicji wewn\u0119trznego mapowania zasob\u00f3w. Na przyk\u0142ad, podfolder \/etc\/map\/http zawiera mapowania dla protoko\u0142u HTTP, kt\u00f3re umo\u017cliwiaj\u0105 definiowanie przekierowa\u0144, adres\u00f3w vanity URL oraz wirtualnych host\u00f3w dla AEM.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-url-shortening-is-done-in-aem-\">Jak odbywa si\u0119 skracanie adres\u00f3w URL w AEM?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Skracanie adres\u00f3w URL mo\u017cna wykona\u0107 za pomoc\u0105 Sling Resource Resolver Factory, je\u015bli potrzebne s\u0105 proste regu\u0142y, takie jak usuwanie licznych podfolder\u00f3w z ci\u0105gu URL, lub za pomoc\u0105 Sling Mapping dla bardziej z\u0142o\u017conych scenariuszy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-does-sling-resolution-work-in-aem-\">Jak dzia\u0142a rozwi\u0105zywanie adres\u00f3w Sling w AEM?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apache Sling jest u\u017cywany do dopasowywania przychodz\u0105cych adres\u00f3w URL \u017c\u0105da\u0144 do konkretnych fragment\u00f3w tre\u015bci w repozytorium JCR. Repozytorium ma struktur\u0119 hierarchiczn\u0105, a ka\u017cdy fragment tre\u015bci w nim posiada d\u0142ug\u0105 i unikaln\u0105 \u015bcie\u017ck\u0119 zasobu. Aby okre\u015bli\u0107 pasuj\u0105c\u0105 tre\u015b\u0107, Apache Sling stosuje zestaw predefiniowanych regu\u0142 i filtr\u00f3w typ\u00f3w zasob\u00f3w.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Modu\u0142 przepisywania Drzewo mapowa\u0144 repozytorium \/etc\/map Interfejs ResourceProvider Podsumowanie FAQ Zobacz tak\u017ce: Czym s\u0105 regu\u0142y przepisywania AEM Dispatcher? [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":5015,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[157],"tags":[],"class_list":["post-23441","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adobe-experience-manager"],"acf":{"cta":"Give Us a Call","phone":"+1 (438) 383-6878","meta-description":"Jak korzysta\u0107 z zaawansowanych ustawie\u0144 AEM Dispatcher, aby dostosowa\u0107 \u015brodowisko produkcyjne i upro\u015bci\u0107 rozw\u00f3j: modu\u0142 przepisywania HTTP, drzewo mapowa\u0144 repozytorium, interfejs dostawcy zasob\u00f3w."},"_links":{"self":[{"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/posts\/23441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/comments?post=23441"}],"version-history":[{"count":1,"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/posts\/23441\/revisions"}],"predecessor-version":[{"id":23442,"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/posts\/23441\/revisions\/23442"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/media\/5015"}],"wp:attachment":[{"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/media?parent=23441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/categories?post=23441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/axamit.com\/pl\/wp-json\/wp\/v2\/tags?post=23441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}