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

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f