Opencms 静态导出子路径的设置

 做过opencms静态导出的人都知道,如果你把opencms的内容静态导出的话,发布路径上都会带上“export\ sites\mysite ”,这是opencms默认添加的,怎么才能去掉他呢?我找不到这样的文档,在opencms官方文档上面也没有,网上有一些使用apache rewriteurl的,这实际上和opencms设计的初衷相违背的。

 

       有没有想过,为什么opencms安装好后要通过/opencms/opencms/两个opencms来访问他的后台呢?因为,他的设计人员,认为用户会使用他们的静态导出功能发布网站,但是,往往事与愿违,还有很多人并不知道如何使用,静态导出功能,结果,就出现了使用apache rewriteurl,强行,把在线给录入人员使用的发布内容,展现给用户,而不是,opencms想要给用户的静态导出后的内容。

 

      实际上,这也不奇怪,opencms的文档,和他的功能比较起来,显得太单薄了。我也犯过同样的问题,那好现在我们来纠正这个错误,如何去掉“export\sites\mysite”中的"site\mysite"呢?我们先来看看opencms的源代码:

String org.opencms.staticexport.CmsStaticExportManager.getRfsName(CmsObject cms, String vfsName, String parameters)
的第1168行,有以下一段代码:
Java代码   :
if (exportNameProperty.isNullProperty()) {
                // if "exportname" is not set we must add the site root 
                rfsName = cms.getRequestContext().addSiteRoot(rfsName);
            } else {
                // "exportname" property is set
                String exportname = exportNameProperty.getValue();
                if (exportname.charAt(0) != '/') {
                    exportname = '/' + exportname;
                }
                if (exportname.charAt(exportname.length() - 1) != '/') {
                    exportname = exportname + '/';
                }


这里面有一个变量exportname 这个变量实际上是资源属性exportname,你随便找一个资源,右键选择它的property然后点击advance按钮,在属性列表里面就可以看到这个字段,看了上面这段代码,我就在想是不是设置了这个属性,就可以使用这个属性替代原来的"/sites/mysite"呢?

事实证明,我的直觉是对的,修改"/sites/mysite"文件夹的属性,改"export"属性为"myexport",单步调试了以后,发现,最终的linke成了"export/myexport",而不是原来的"export/sites/mysite"。


你可能要问,如果我连"myexport"都打算省掉怎么办呢?很简单设置exportname属性='/'就可以了。这时,所有"/sites/mysite"下的所有资源都将被直接导出到"export/"下面。访问的url也会由原来的"/export/myexport" -> "export/"。比如:原来有个页面"http://127.0.0.1/export/myexport/index.html" -> "http://127.0.0.1/export/index.html"来访问。

 

接下来,我想改掉"export/",这个名字太不专业了,这个也简单,打开{opencms_home}/WEB-INF/config/opencms-importexport.xml,找到<exportpath>${apache_home}/htdocs/export</exportpath>
其中${apache_home}是你安装apache的路径,把后面的"export"改成你心怡的名字就可以了,或者整个路径全部改掉,改成你想要的路径,opencms就会发布到你新定义的位置,然后再找到“<rfs-prefix>${CONTEXT_NAME}/export</rfs-prefix>”这一行,将其中的export,改成你要的名字,比如:"newexport"。生成出来的静态文件里的链接就会变成"/newexport/myexport/..."

好了,至此,静态导出的,发布路径,以及链接问题都解决了,你可以改成让用户访问,你的静态页面了,这对于减轻你的服务器压力,以及SEO都有好处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值