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

要解决此问题:

  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