我有sling mappings设置,重写外部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"]
页面组件上的一些HTML:
<head>
<link rel="canonical" href="/content/www-sitename/home.html" />
<meta name="canonical" content="/content/www-sitename/home.html" />
</head>
访问时,只有链接:href已被重写,meta:content不变:
<head>
<link rel="canonical" href="http://www.sitename.com/home.html" />
<meta name="canonical" content="/content/www-sitename/home.html" />
</head>
值得注意的是,在配置linkcheckertransformer.rewriteElements
以包含它之前,未重写链接:href。为什么此更改适用于link:href,而不适用于meta:content。除了创建自定义重写过滤器之外,还可以采取哪些措施来获取要重写的meta:content属性中的链接?
答案 0 :(得分:5)
nerd 答案是正确的,默认情况下,负责解析HTML的内部Sling机制(htmlparser)仅支持以下标记:a
,area
,form
,base
,link
,script
,body
,即使您将meta:content
添加到LinkChecker配置,CQ也不会识别{{ 1}}作为需要处理的标签。
要重新配置<meta>
,请在htmlparser
下创建一个名为generator-htmlparser
的节点,其中包含以下属性:
/libs/cq/config/rewriter/default
,A
,AREA
,FORM
,BASE
,LINK
,SCRIPT
,{{ 1}}] BODY
属性应该是多值的,因此您可以在以后添加其他标记。
如果您不想覆盖META
下的内容,请创建自己的重写配置:
includeTags
及其子项复制到/libs
。/libs/cq/config/rewriter/default
上的/apps/YOURAPP/config/rewriter/my-rewriter
属性设置为order
。my-rewriter
下创建1
。答案 1 :(得分:1)
我认为你必须将元标记添加到htmplparser生成器。
查看我的问题和答案:How to add additional element to htmlparser generator