從AEM網域和通訊協定設定中解析不正確或重複的標準和網站地圖URL

若未正確設定頁面屬性、外部化程式、請求標頭或範本邏輯,AEM產生的標準標籤和Sitemap URL會顯示錯誤的網域、錯誤的通訊協定、相對路徑或重複的標準標籤。 最常見的原因是遺失Externalizer網域設定、遺失X-Forwarded-Proto標頭、不正確的Dispatcher clientheaders規則或發出第二個標準標籤的範本邏輯。 更正頁面屬性和外部化器設定,確保通訊協定標頭能到達AEM,並移除重複的範本邏輯會還原正確的標準和Sitemap URL。

說明 description

問題: AEM會傳送不正確、重複或相對的規範與網站地圖URL

說明

AEM中的網站顯示不正確的規範URL — http而非https、相對URL或遺漏完整URL — 或產生包含相對URL而非絕對URL的網站地圖。 某些情況下,當自訂實施已產生預設標準標籤時,AEM會插入此標籤,產生重複專案。 頁面屬性設定錯誤、遺失Externalizer網域設定、遺失X-Forwarded-Proto標頭、不正確的Dispatcher clientheaders規則,或自動發出標準標籤的範本層級邏輯都會觸發這些症狀。

環境:

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Managed Services
  • 內部部署AEM 6.5
  • Dispatcher和CDN /負載平衡器階層

問題/症狀:

  • 標準URL顯示為http://而非https://
  • Sitemap僅包含slug或相對URL,而非絕對URL
  • 重複的規範標籤會出現在頁面來源中
  • AEM自動產生的標準標籤只會顯示相對路徑,不會顯示完整URL

根本原因:

AEM會從頁面屬性、外部器設定、要求標題(尤其是X-Forwarded-Proto)、資源解析器對應和範本特定邏輯的組合,決定標準和Sitemap URL。 當其中有任何遺失、設定錯誤或覆寫時,AEM會輸出不正確、重複或相關的URL。 某些Sitemap行為也是Apache Sling Sitemap模組中的限制。

如何確認

  1. 將觀察到的症狀與一個類別比對:重複的標準標籤、錯誤的通訊協定(http)、缺少網域或產生相對URL的網站地圖。
  2. 檢查頁面來源,並確認有幾個標準標籤,以及每個標籤是否使用正確的通訊協定和網域。
  3. 在瀏覽器中擷取<site>.sitemap-index.xml,並確認專案是絕對或相對URL。

解決方法 resolution

  1. 修正重複或不正確的規範標籤。 開啟 頁面屬性> Advanced 並找出控制自動規範產生的規範URL欄位。 視需要清除或更新值,然後重新載入頁面來源,並確認只剩下單一規範標籤。 如果自動產生的標籤仍然出現,請檢查自訂headerlibshead.html是否有範本邏輯新增第二個標準標籤,並移除或停用重複的邏輯。

  2. 修正使用錯誤通訊協定的規範URL。 確認您的CDN或負載平衡器傳送標頭:

    code language-none
    X-Forwarded-Proto: https
    

使用瀏覽器DevTools或curl檢查傳入的請求標頭,以確認標頭是否存在。 如果缺少,請更新CDN或負載平衡器規則。
​3. 若為AEMaaCS,檢閱透過Cloud Manager為org.apache.felix.http.sslfilter.SslFilter部署的OSGi設定,其具有下列欄位值:

  • enable = true
  • forwarded = true
  • forwarded.header = X-Forwarded-Proto
  • forwarded.value = https

部署後,檢視頁面來源以確認規範產生使用https
​4. 修正網站地圖中的相對URL或缺少的網域。 確認正在使用sitemap-index.xml專案 — 絕對URL通常只出現在sitemap-index.xml中,而不會出現在子sitemap.xml檔案中。 然後使用com.day.cq.commons.impl.ExternalizerImpl-publish設定,確定已透過程式碼部署您的Externalizer網域設定。 使用externalizer.externalLinkexternalizer.publishLink新增簡單的測試連結,以確認Externalizer產生絕對URL。
​5. 使用AEM現成可用的功能產生網站地圖。 確認 產生網站地圖 已在每頁層級上正確啟用或停用。 對於標示為Sitemap根的頁面,AEM會產生sitemap.xmlsitemap-index.xml。 直接存取/content/<path>.sitemap-index.xml/content/<path>.sitemap.xml以確認產生預期的XML。 如果URL未傳回任何內容,請確認頁面已發佈。 如果您使用Edge Delivery Services (EDS) Sitemap,請注意,不支援lastmodchangefreq — 這是硬性限制,因此請勿嘗試自訂EDS Sitemap。
​6. 對於AEMaaCS上的MSM或多語言網站,請使用具有頁面層級sling:sitemapRoot的內建Sling Sitemap。 不支援ACS Commons Sitemap產生器。 確認sling:sitemapRoot = true​存在於每個語言根目錄上,然後存取<langroot>.sitemap-index.xml以確認每個語言根目錄產生自己的Sitemap。

驗證

  1. 開啟頁面來源,並確認只有一個標準標籤存在、通訊協定正確,且網域符合預期的設定。
  2. 開啟sitemap-index.xmlsitemap.xml,並驗證所支援的位置是否顯示絕對URL,沒有相對Slug,除非Apache Sling Sitemap限制有所預期。
  3. 確認在部署後對Dispatcher、CDN或OSGi設定傳播的變更。 AEMaaCS會在部署時自動套用這些專案。

相關閱讀

recommendation-more-help
experience-cloud-kcs-help-kbarticles