AEM無法透過Apache重寫規則重新導向/robots.txt

當Apache設定為將/robots.txt重寫至AEM中的DAM路徑,但請求仍傳回​ 404 ​時,這可能是由於Dispatcher處理URL的方式。 本文說明DispatcherUseProcessedURL設定如何影響重寫行為,以及更新它如何解決重新導向失敗。

說明 description

環境

Adobe Experience Manager (AEM) On-Premise, v6.5

問題/症狀

  • 重寫規則已設定為將/robots.txt重新導向至/content/dam/xxxx/robots.txt。 資產存在且可直接存取。
  • Dispatcher允許規則允許存取/robots.txt/content/dam/xxxx/robots.txt。 儘管如此,存取/robots.txt仍傳回​ 404 ​錯誤。

根本原因

Apache設定包含下列重寫規則:

RewriteRule /robots.txt$ /content/dam/xxxx/robots.txt [ PT,L]

此規則會將/robots.txt的請求正確重寫至DAM路徑。 不過,Dispatcher的設定如下:

DispatcherUseProcessedURL 0

使用此設定時,Dispatcher會忽略重寫的URL,而是使用原始請求URI。 因此,它無法識別重寫的路徑並傳回​ 404 ​錯誤。

根據安裝Dispatcher檔案,將DispatcherUseProcessedURL設定為 1 可確保Dispatcher在mod_rewrite之後使用已處理的URL,讓重新導向可如預期般運作。

解決方法 resolution

若要解決問題:

  1. 開啟您的Apache Dispatcher設定檔,通常名為httpd-dispatcher.conf
  2. 找到DispatcherUseProcessedURL指示詞。
  3. 將其值從0變更為1:
    • DispatcherUseProcessedURL 1
  4. 儲存檔案並重新啟動Apache,變更才會生效。

此變更可確保Dispatcher使用重寫的URL (/content/dam/xxxx/robots.txt),而非原始請求(/robots.txt),讓重新導向可如預期般運作。

相關閱讀

AEM Dispatcher指南中的Dispatcher安全性檢查清單

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