我基本上希望短网址得到解决,超文本标记语言页面使用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被重写为它们的缩短形式。
知道我错过了什么吗?
默认情况下,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=".*
"
service.special_link_prefix="[javascript:,data:,mailto:,#,<!--,${]"/>
我认为check_override_patterns
和special_link_patterns
的组合禁用了链接缩短。
删除此文件使链接缩短再次起作用。