Aem Sling映射重写规则不会重写元标记中的路径
我有一个将传出路径重写到外部URL的映射设置。此重写的一个示例:Aem Sling映射重写规则不会重写元标记中的路径,aem,sling,Aem,Sling,我有一个将传出路径重写到外部URL的映射设置。此重写的一个示例: /content/www sitename/home.html将被重写为http://www.sitename.com/home.html 我还配置了LinkCheckerTransformerFactory:linkcheckertransformer.rewriteElements=[“a:href”、“area:href”、“form:action”、“link:href”、“meta:content”] 页面组件上的某些H
/content/www sitename/home.html
将被重写为http://www.sitename.com/home.html
我还配置了LinkCheckerTransformerFactory:linkcheckertransformer.rewriteElements=[“a:href”、“area:href”、“form:action”、“link:href”、“meta:content”]
页面组件上的某些HTML:
<head>
<link rel="canonical" href="/content/www-sitename/home.html" />
<meta name="canonical" content="/content/www-sitename/home.html" />
</head>
访问时,只有链接:href被重写,meta:内容不变:
<head>
<link rel="canonical" href="http://www.sitename.com/home.html" />
<meta name="canonical" content="/content/www-sitename/home.html" />
</head>
值得注意的是:href链接在配置
linkcheckertransformer.rewriteElements
以包含它之前没有被重写。为什么这项更改适用于link:href,而不适用于meta:content。除了创建自定义重写过滤器外,还可以做些什么来获取要重写的meta:content属性中的链接?我认为您必须向HTMLParser生成器添加meta标记
查看我的问题和答案:书呆子的答案是正确的,默认情况下,负责解析HTML的内部Sling机制(htmlparser)只支持以下标记:a
,区域
,表单
,基本
,链接
,脚本
,正文
,因此,即使您将meta:content
添加到LinkChecker配置中,CQ也不会将
识别为需要处理的标记
要重新配置htmlparser
,请在/libs/cq/config/rewriter/default
下创建一个名为generator htmlparser
的节点,该节点具有以下属性:
- jcr:primaryType=nt:非结构化
- 包括标签=[
,A
,区域
,表单
,基础
,链接
,脚本
,正文
]元
includeTags
属性应该是多值的,以便将来可以添加其他标记
如果不想覆盖/libs
下的内容,请创建自己的重写器配置:
/libs/cq/config/rewriter/default
及其子项复制到/apps/YOURAPP/config/rewriter/my rewriter
my rewriter
上的order
属性设置为1
my rewriter
下创建generator htmlparser
谢谢你们两位!有没有办法在不修改libs的情况下做到这一点?我已经按照您在apps下的说明尝试创建/apps/cq/config/rewriter/default/generator htmlparser,但没有成功。再次感谢@Tomek。我有一个关于重写包含
jcr:content
的URL的后续问题。请参阅: