AEM链接检查器:如何阻止无效链接在发布实例中被移除
阻止AEM发布实例自动移除无效内部链接的解决方案
以下是几个经过验证的可行方案,按实现复杂度从低到高排序:
1. 调整Link Checker的OSGi配置
找到com.day.cq.rewriter.linkchecker.impl.LinkCheckerImpl这个OSGi配置,针对发布实例(通过run mode配置)修改以下参数:
- 将
removeInvalidLinks设置为false:直接阻止发布时移除无效链接标签、仅保留文本的行为。 - 可选:将
enableLinkValidation设置为false,完全禁用发布实例上的链接有效性检查,减少额外性能开销。
修改后保存配置,必要时重启Link Checker相关服务使其生效。
2. 重写核心链接组件的逻辑
如果使用AEM Core Components的Link组件,默认逻辑会在渲染时检查链接有效性并处理失效链接,可通过以下方式重写:
- 创建自定义Link Sling Model,继承原Core Components的LinkModel,覆盖
isValid()方法直接返回true,跳过有效性验证。 - 或者在HTL模板中,不依赖模型的验证结果,直接输出完整链接标签:
<a href="${link.url}" ${link.htmlAttributes}>${link.text}</a>
避免使用原组件中基于有效性判断的条件渲染逻辑。
3. 自定义Link Rewriter Pipeline
通过扩展AEM的Link Rewriter机制,实现自定义链接处理逻辑:
- 创建自定义
LinkTransformer,在transform()方法中跳过对无效链接的移除操作。 - 在OSGi配置中调整Link Rewriter Pipeline的顺序,让自定义Transformer优先于默认的失效链接处理逻辑执行。
注意事项
- 禁用自动移除无效链接后,发布页面会保留原始无效链接,可能导致用户访问时出现404错误,建议在作者端加强链接审核流程。
- 所有配置修改建议通过AEM的Configuration Manager进行,避免直接修改系统文件,确保可维护性。
内容的提问来源于stack exchange,提问作者Duc Huynh
相关产品推荐
相关产品推荐

