我基本上希望使用短网址来解析,并使用CQ5网站的短网址生成HTML网页。到目前为止,短URL已按预期映射到长URL,但生成的HTML页面中的链接不会缩短。
例如,我期待以下src
标记的<script>
属性:
<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/hosts
和Apache配置文件,以便在我的本地开发环境中通过http://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解析器(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
当我在浏览器中转到http://site-1:4503/style/clientlibs.1395978029951.js
时,JS文件将按预期呈现。
但是,当我查看主页的HTML源代码时,正如我前面提到的,没有一个长URL被重写为缩短的表单。
任何想法我在这里缺少什么?
答案 0 :(得分:3)
默认情况下,CQ会重写a
,area
和form
标记中的链接。如果您还要重写script
标记中的路径,请在发布时打开LinkCheckerTransformerFactory
服务的OSGi配置,并将以下字符串添加到重写元素选项:
script:src
BTW:/content
不是存储clientlib的最佳位置。通常我们会将这些内容放在/etc/designs/YOUR_APP
。
答案 1 :(得分:1)
我们终于找到了问题并解决了这个问题。
有人在com.day.cq.rewriter.linkchecker.impl.LinkCheckerImpl.xml
下添加了/apps/myapp/config.publish
,内容如下:
<?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
的组合已禁用链接缩短。
删除此文件会使链接缩短工作。