从AEM域和协议配置中解析不正确或重复的标准和站点地图URL
如果未正确配置页面属性、外部化器、请求标头或模板逻辑,AEM生成的规范标记和Sitemap URL会显示错误的域、错误的协议、相对路径或重复的规范标记。 最常见的原因是缺少外部化器域配置、缺少X-Forwarded-Proto标头、调度程序clientheaders规则不正确或发送第二个规范标记的模板逻辑。 更正页面属性和外部化器设置,确保协议标头可到达AEM,并删除重复的模板逻辑可恢复正确的规范化和站点地图URL。
描述 description
问题: AEM发送不正确、重复或相对规范和Sitemap URL
说明
AEM中的网站显示不正确的规范URL — http而不是https、相对URL或缺少完整URL — 或生成包含相对URL而不是绝对URL的网站地图。 在某些情况下,当自定义实施已生成一个默认规范标记,并生成重复项时,AEM会注入该标记。 页面属性配置错误、缺少外部化器域配置、缺少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仅包含概要URL或相对URL,而不包含绝对URL
- 页面源中会显示重复的规范标记
- AEM自动生成的规范标记仅显示相对路径而不是完整URL
根本原因:
AEM通过页面属性、外部化器配置、请求标头(尤其是X-Forwarded-Proto)、资源解析器映射和特定于模板的逻辑的组合确定规范和Sitemap URL。 当其中任何缺少、配置错误或覆盖时,AEM输出不正确、重复或相关的URL。 某些站点地图行为也是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添加一个简单的测试链接以确认外部化器生成绝对URL。
5. 使用AEM现成功能生成站点地图。 确认 生成站点地图 在每页级别上正确启用或禁用。 对于标记为站点地图根的页面,AEM生成sitemap.xml和sitemap-index.xml。 直接访问/content/<path>.sitemap-index.xml或/content/<path>.sitemap.xml以确认生成了预期的XML。 如果URL未返回任何内容,请确认页面已发布。 如果您使用Edge Delivery Services (EDS)站点地图,请注意,不支持lastmod和changefreq — 这是一个硬性限制,因此请勿尝试自定义EDS站点地图。
6. 对于AEMaaCS上的MSM或多语言站点,请使用具有页面级别sling:sitemapRoot的内置Sling Sitemap。 不支持ACS Commons Sitemap生成器。 确认sling:sitemapRoot = true存在于每个语言根中,然后访问<langroot>.sitemap-index.xml以确认每个语言根生成自己的站点地图。
验证
- 打开页面源并确认只有一个规范标记、协议正确且域与预期配置匹配。
- 打开
sitemap-index.xml和sitemap.xml并验证在支持的位置是否显示绝对URL,没有相对Slug,除非Apache Sling Sitemap限制要求。 - 确认对部署后传播的Dispatcher、CDN或OSGi配置的更改。 AEMaaCS在部署时自动应用这些参数。