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
若要解決問題:
- 開啟您的Apache Dispatcher設定檔,通常名為
httpd-dispatcher.conf。 - 找到
DispatcherUseProcessedURL指示詞。 - 將其值從0變更為1:
DispatcherUseProcessedURL 1
- 儲存檔案並重新啟動Apache,變更才會生效。
此變更可確保Dispatcher使用重寫的URL (/content/dam/xxxx/robots.txt),而非原始請求(/robots.txt),讓重新導向可如預期般運作。
相關閱讀
AEM Dispatcher指南中的Dispatcher安全性檢查清單
recommendation-more-help
experience-cloud-kcs-help-kbarticles