AEM无法通过Apache重写规则重定向/robots.txt
当Apache配置为在AEM中将/robots.txt重写到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