從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模組中的限制。
如何確認
- 將觀察到的症狀與一個類別比對:重複的標準標籤、錯誤的通訊協定(
http)、缺少網域或產生相對URL的網站地圖。 - 檢查頁面來源,並確認有幾個標準標籤,以及每個標籤是否使用正確的通訊協定和網域。
- 在瀏覽器中擷取
<site>.sitemap-index.xml,並確認專案是絕對或相對URL。
解決方法 resolution
-
修正重複或不正確的規範標籤。 開啟 頁面屬性
>Advanced 並找出控制自動規範產生的規範URL欄位。 視需要清除或更新值,然後重新載入頁面來源,並確認只剩下單一規範標籤。 如果自動產生的標籤仍然出現,請檢查自訂headerlibs或head.html是否有範本邏輯新增第二個標準標籤,並移除或停用重複的邏輯。 -
修正使用錯誤通訊協定的規範URL。 確認您的CDN或負載平衡器傳送標頭:
code language-none X-Forwarded-Proto: https
使用瀏覽器DevTools或curl檢查傳入的請求標頭,以確認標頭是否存在。 如果缺少,請更新CDN或負載平衡器規則。
3. 若為AEMaaCS,檢閱透過Cloud Manager為org.apache.felix.http.sslfilter.SslFilter部署的OSGi設定,其具有下列欄位值:
enable= trueforwarded= trueforwarded.header= X-Forwarded-Protoforwarded.value= https
部署後,檢視頁面來源以確認規範產生使用https。
4. 修正網站地圖中的相對URL或缺少的網域。 確認正在使用sitemap-index.xml專案 — 絕對URL通常只出現在sitemap-index.xml中,而不會出現在子sitemap.xml檔案中。 然後使用com.day.cq.commons.impl.ExternalizerImpl-publish設定,確定已透過程式碼部署您的Externalizer網域設定。 使用externalizer.externalLink或externalizer.publishLink新增簡單的測試連結,以確認Externalizer產生絕對URL。
5. 使用AEM現成可用的功能產生網站地圖。 確認 產生網站地圖 已在每頁層級上正確啟用或停用。 對於標示為Sitemap根的頁面,AEM會產生sitemap.xml和sitemap-index.xml。 直接存取/content/<path>.sitemap-index.xml或/content/<path>.sitemap.xml以確認產生預期的XML。 如果URL未傳回任何內容,請確認頁面已發佈。 如果您使用Edge Delivery Services (EDS) Sitemap,請注意,不支援lastmod和changefreq — 這是硬性限制,因此請勿嘗試自訂EDS Sitemap。
6. 對於AEMaaCS上的MSM或多語言網站,請使用具有頁面層級sling:sitemapRoot的內建Sling Sitemap。 不支援ACS Commons Sitemap產生器。 確認sling:sitemapRoot = true存在於每個語言根目錄上,然後存取<langroot>.sitemap-index.xml以確認每個語言根目錄產生自己的Sitemap。
驗證
- 開啟頁面來源,並確認只有一個標準標籤存在、通訊協定正確,且網域符合預期的設定。
- 開啟
sitemap-index.xml和sitemap.xml,並驗證所支援的位置是否顯示絕對URL,沒有相對Slug,除非Apache Sling Sitemap限制有所預期。 - 確認在部署後對Dispatcher、CDN或OSGi設定傳播的變更。 AEMaaCS會在部署時自動套用這些專案。