提问者:小点点

这个CQ5/AEMURL重写场景缺少什么?


我基本上希望短网址得到解决,超文本标记语言页面使用CQ5网站的短网址生成。到目前为止,短网址正按预期映射到长网址,但生成的超文本标记语言页面中的链接并没有缩短。

例如,我期望以下src属性

<script type="text/javascript" src="/content/foo/c0/06/9d/3d93a858-efb4-4619-8f9e-5edc65d0f5ae/style/clientlibs.1395978029951.js"></script>

缩短为:

<script type="text/javascript" src="/style/clientlibs.1395978029951.js"></script>

锚点元素中的href属性也没有被缩短。

在JCR中,网站存储在/content/foo/c0/06/9d/3d93a858-efb4-4619-8f9e-5edc65d0f5ae/下,我已经配置了我的/etc/host和Apache配置文件,以便在我的本地开发环境中通过超文本传输协议://site-1:4503访问它。

我定义了以下URL映射:

{
   "jcr:primaryType":"sling:Folder",
   "http":{
      "jcr:primaryType":"sling:Folder",
      "site-1.4503":{
         "sling:internalRedirect":[
            "/content/foo/c0/06/9d/3d93a858-efb4-4619-8f9e-5edc65d0f5ae"
         ],
         "jcr:primaryType":"sling:Mapping",
         "redirect":{
            "sling:internalRedirect":[
               "/content/foo/c0/06/9d/3d93a858-efb4-4619-8f9e-5edc65d0f5ae/$1",
               "/$1"
            ],
            "jcr:primaryType":"sling:Mapping",
            "sling:match":"(.+)$"
         }
      },
      "site_1.4503":{
         "sling:internalRedirect":[
            "/content/foo/c0/06/9d/3d93a858-efb4-4619-8f9e-5edc65d0f5ae/home.html"
         ],
         "jcr:primaryType":"sling:Mapping",
         "sling:match":"site-1.4503/$"
      }
   }
}

当我在JCR Resolver(http://localhost:4503/system/console/jcrresolver)中测试此映射时,它按预期工作。例如,

/content/foo/c0/06/9d/3d93a858-efb4-4619-8f9e-5edc65d0f5ae/style/clientlibs.1395978029951.js

被映射到

http://site-1:4503/style/clientlibs.1395978029951.js

http://site-1:4503/style/clientlibs.1395978029951.js

决心:

JcrNodeResource, 
type=cq:ClientLibraryFolder,
superType=null, 
path=/content/foo/c0/06/9d/3d93a858-efb4-4619-8f9e-5edc65d0f5ae/style/clientlibs

另外,当我在浏览器中转到超文本传输协议://site-1:4503/style/clientlibs.1395978029951.js时,JS文件会按预期呈现。

但是,当我查看主页的超文本标记语言源时,正如我之前提到的,没有一个长URL被重写为它们的缩短形式。

知道我错过了什么吗?


共2个答案

匿名用户

默认情况下,CQ以标记的形式重写区域中的链接。如果您还想重写script标记中的路径,请在发布时打开LinkCheckerTransformerFactory服务的OSGi配置,并将以下字符串添加到Rewrite Elements选项中:

script:src

BTW:/content不是存储clientlib的最佳位置。通常我们将这些东西放在/etc/设计/YOUR_APP中。

匿名用户

我们终于设法查明问题并解决了这个问题。

有人在/apps/myapp/config.发布下添加了一个com.day. cq.rewrite.linkcheckker.iml.LinkCheckerImp.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    jcr:primaryType="sling:OsgiConfig"
    service.bad_link_tolerance_interval="{Long}48"
    service.check_override_patterns="[^.]"
    service.special_link_patterns=".*&#xa;"
    service.special_link_prefix="[javascript:,data:,mailto:,#,&lt;!--,${]"/>

我认为check_override_patternsspecial_link_patterns的组合禁用了链接缩短。

删除此文件使链接缩短再次起作用。