调度程序上缓存的具有标准Hyperlink插件的AEM RTE不会在同一行的第二个,第三个链接上缩短

时间:2019-02-07 17:43:28

标签: aem cq5 aem-6

Issue image 在AEM中使用标准RTE插件超链接功能时遇到此问题。

单击链接可以正常工作,它可以按预期将我路由到正确的缩短URL(/usa-en/delete/smart-factory.html)。

但是,将鼠标悬停在生成的标记的链接或视图源上似乎是一个问题,其中链接显示的绝对路径为(/ content / te-com / usa / en / pages /…。),这会影响我们的SEO。< / p>

实际上,当我将鼠标悬停在链接上时,只有第一个链接被缩短,所有其他链接都显示绝对路径(/ content / te-com / ...路径)。我怀疑缓存的链接的路径变短有问题。

JCR中的节点存储:

<p>Hello <a href="/content/te-com/usa/en/pages/delete/smart-factory.html">one</a> and <a href="/content/te-com/usa/en/pages/delete/pgp-test0.html">two</a>.&nbsp;</p>

从源代码生成的HTML标记:

<div class="global-rte-std-bold global-labels parbase section"><p>Hello <a href="/usa-en/delete/smart-factory.html">one</a> and <a href="/content/te-com/usa/en/pages/delete/pgp-test0.html">two</a>.&nbsp;</p>

但是,当我在使用RTE时添加班次+ Enter时,会添加
标记,并且所有链接的URL都会以某种方式缩短,如下面的标记所示。节点存储仍然与上面相同,就像没有shift + enter的存储一样

生成的标记(观察到URL缩短了): <div class="global-rte-std-bold global-labels parbase section"><p>Hello <a href="/usa-en/delete/smart-factory.html">one</a> and<br><a href="/usa-en/delete/pgp-test0.html">two</a>.&nbsp;</p>

此外,我们在Apache中具有以下重写规则,当我单击链接时,该规则实际上生效。我怀疑带有RTE的缓存URL出现此问题。

RewriteRule ^ /?usa-zh /?(.*)$ / content / te-com / usa / zh / pages / $ 1 [PT,QSA]。

注意:我们尚未自定义RTE插件及其在AEM 6.2上一直使用的标准超链接插件

此处使用的代码很简单

我想知道如何使用shift + Enter正常工作,而不是当我在同一行上拥有链接时。

在此方面的任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

当您使用RTE编辑器链接内部页面/资产时,URL缩短不起作用。我遇到了同样的情况,为此,我不得不编写自定义Sling重写程序来转换链接,以便resourceResolver.map(path)正常工作。

 @Override
public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
   int hrefIndex = atts.getIndex("href");
    String href = atts.getValue("href");
  atts.setValue(hrefIndex, resolver.map(href));
}