gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:31:39 30 4
gpt4 key购买 nike

我有 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"]

页面组件上的一些 HTML:

<head>
<link rel="canonical" href="/content/www-sitename/home.html" />
<meta name="canonical" content="/content/www-sitename/home.html" />
</head>

访问时,只有link: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 以包含它之前,未重写 link:href。为什么此更改对 link:href 有效,但对 meta:content 无效。除了创建自定义重写过滤器之外,还可以做什么来重写 meta:content 属性中的链接?

最佳答案

nerd 答案是正确的,默认情况下,负责解析 HTML 的内部 Sling 机制 (htmlparser) 仅支持以下标签:a , area , form , base , link , script , body , 所以即使你添加 meta:content对于 LinkChecker 配置,CQ 将无法识别 <meta>作为需要处理的标签。

为了重新配置htmlparser , 创建一个名为 generator-htmlparser 的节点在 /libs/cq/config/rewriter/default 下具有以下属性:

  • jcr:primaryType = nt:unstructured
  • includeTags = [ A , AREA , FORM , BASE , LINK , SCRIPT , BODY , META ]

includeTags属性应该是多值的,以便您将来可以添加其他标签。

如果不想覆盖/libs下的内容,创建您自己的重写器配置:

  1. 复制/libs/cq/config/rewriter/default和它的 child /apps/YOURAPP/config/rewriter/my-rewriter .
  2. 设置order my-rewriter 上的属性(property)至 1 .
  3. 创建 generator-htmlparsermy-rewriter下如上所述。

关于aem - Sling 映射重写规则不会重写元标记中的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148047/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com