Aem Sling映射重写规则不会重写元标记中的路径

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

我有一个将传出路径重写到外部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:内容不变:

<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的后续问题。请参阅: