Dispatcher虛名URL | AEM
本檔案將協助您瞭解Adobe Experience Manager如何處理虛名URL和其他技術,例如使用重寫規則讓內容更接近傳送的邊緣。
說明 description
環境
Adobe Experience Manager
問題/症狀
AEM如何處理虛名URL? 是否有其他技術可將內容對應得更靠近傳送的邊緣?
什麼是虛名URL?
當您的內容位於合理的資料夾結構中時,它並不總是位於易於參照的URL中。 虛名URL就像捷徑。 參照實際內容所在位置的較短或唯一URL。
範例: /aboutus指向 /content/we-retail/us/en/about-us.html
AEM作者可選擇在AEM中為內容設定虛名url屬性並將其發佈。
若要使用此功能,您必須調整Dispatcher篩選器,以允許虛名通過。 以作者設定這些虛名頁面專案所需的速率調整Dispatcher設定檔案,會使這種調整變得不合理。
因此,Dispatcher模組具有自動允許內容樹中列出的任何虛值的功能。
解決方法 resolution
如何運作?
製作虛名URL
作者在AEM中造訪頁面,然後造訪頁面屬性,並在虛名URL區段中新增專案。
在儲存變更並啟動頁面後,現在會將虛名指派給此頁面。
觸控式UI:
傳統內容尋找器:
注意: 請瞭解這很容易發生名稱空間問題。 虛專案是所有頁面的全域專案,這只是您必須計畫因應措施的缺點之一。 我們稍後會說明其中幾項。
資源解析/對應:
每個虛名專案都是用於內部重新導向的sling對應專案。 這些對應會顯示在AEM執行個體Felix主控台(/system/console/jcrresolver
)中
以下是虛專案建立的地圖專案的熒幕擷圖:
在上述範例中,當我們要求AEM執行個體造訪/aboutus
時,它將解析為/content/we-retail/us/en/about-us.html
Dispatcher自動允許篩選器:
處於安全狀態的Dispatcher會篩選掉路徑/上透過Dispatcher的請求,因為這是JCR樹的根目錄。
請務必確定發佈者僅允許來自/content
和其他安全路徑等的內容,而不允許/system
等路徑的內容。
以下是基本資料夾/中的問題和虛名URL,那麼我們如何允許他們在保持安全的同時聯絡發佈者?
簡單Dispatcher具有自動篩選允許機制,您必須安裝AEM套件,然後設定Dispatcher以指向該套件頁面。 瀏覽這裡以取得AEM套件。
Dispatcher的伺服器陣列檔案中有設定區段:
/vanity_urls { /url "/libs/granite/dispatcher/content/vanityUrls.html"
/file "/tmp/vanity_urls" /delay 300 }
此設定會通知Dispatcher每300秒從其AEM執行個體擷取此URL,以擷取我們希望允許通過的專案清單。
它會將其回應的快取儲存在/file引數中,在此範例中為/tmp/vanity_urls
因此,如果您透過URI造訪AEM執行個體,將會看到其擷取的內容:
這是超簡單的清單。
將規則重寫為虛規則
為什麼要提到使用重寫規則,而不使用如上所述的內建於AEM中的預設機制?
簡單來說,名稱空間問題、效能,以及可以更好處理的更高層級邏輯。
讓我們再看一下虛專案/aboutus
的範例,看看其內容/content/we-retail/us/en/about-us.html
(使用Apache的mod_rewrite
模組來達成此目的)。
RewriteRule /aboutus /content/we-retail/us/en/about-us.html PT,L,NC
此規則將尋找虛名/aboutus
,並從具有PT旗標(Pass Through)的轉譯器中擷取完整路徑。
它也會停止處理所有其他規則L標幟(最後),這表示它不必周遊大型規則清單,例如JCR解析必須執行的規則。
同時不必代理要求並等待AEM發佈者回應此方法的這兩個元素,因此其效能大幅提升。
此處錦上添花的是NC標幟(不區分大小寫),這表示如果您用/Aboutus
而不是/aboutus
更新URL,它仍然有效,並允許擷取正確的頁面。
若要建立重寫規則以執行此操作,您會在Dispatcher上建立設定檔(範例: /etc/httpd/conf.d/rewrites/examplevanity_rewrite.rules
),並將其包含在.vhost
檔案中,該檔案會處理需要套用這些虛名URL的網域。
以下是包含在其中的範常式式碼片段:
/etc/httpd/conf.d/enabled_vhosts/we-retail.vhost
VirtualHost *:80 ServerName weretail.com ServerAlias
www.weretail.com ........ SNIP ........ IfModule mod_rewrite.c
ReWriteEngine on LogLevel warn rewrite:info
Include /etc/httpd/conf.d/rewrites/examplevanity_rewrite.rules / IfModule
........ SNIP ......../VirtualHost
使用方法和位置?
A.使用AEM控制虛名專案具有以下優點:
- 作者可以即時建立這些檔案
- 它們會與內容共存,並可與內容一起封裝
B.使用mod_rewrite
控制虛名專案具有以下優點:
- 解析內容的速度更快
- 更接近使用者內容請求的邊緣
- 更多擴充性和選項,可控制如何將內容對應到其他條件
- 可不區分大小寫
C.同時使用這兩種方法,但以下是建議與准則,說明何時使用哪一種方法:
- 如果虛值是暫時的,並且規劃的流量層級較低,則使用AEM內建功能
- 如果虛值是不經常變更且頻繁使用的裝訂端點,則使用
mod_rewrite
規則。 - 如果虛名名稱空間(例如:
/aboutus
)必須對同一AEM執行個體上的多個品牌重複使用,則使用重寫規則。
注意: 如果您想要使用AEM虛功能並避免名稱空間,您可以制定命名慣例。 使用類似/brand1/aboutus, brand2/aboutus, brand3/aboutus
的巢狀虛名URL