做过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行,有以下一段代码:
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都有好处。
分享到:
相关推荐
-- 设置静态导出时是否使用相对 路径 --> <userelativelinks>false <!-- 设置404导出URL的值 --> <exporturl>http://127.0.0.1:8080${CONTEXT_NAME}/handle404 <!-- 暂不清楚此项作用 --> ...
干货,opencms应用中去掉路径中两个/opencms。利用urlrewritefilter,网上方法走不通,自己琢磨得出,完美去除。官方文档中方法会带来一些问题。 学习过程中使用了很多积分,各位不缺的话,支援下。实在没有积分又很...
NULL 博文链接:https://shan1234567.iteye.com/blog/913989
opencms guide
opencms 中文网提供的java api 文档包
作者希望OpenCms6.2千寻汉化包1.1版能给众多的OpenCms研究者在OpenCms的研究道路上提供一些帮助…… 作者会陆续出一些OpenCms相关的东东与大家共享……:) OpenCms是一个专业级开源网站内容管理系统,是一个J2EE的...
opencms用户指南+源码 opencms用户指南+源码 opencms用户指南+源码
OpenCms创建网站过程图解——献给OpenCms的初学者们,一起学习吧
Update your existing OpenCms installation to version 9.5.2 with the easy to use upgrade wizard. OpenCms 7.x 和8.x 升级到OpenCms 9.5.2版本安装向导。
OpenCms是一个专业级、开源Java CMS(内容管理系统),由Alkacon公司发起和维护,OpenCms完全基于Java和XML技术实现,内容维护方便、直观,类型定义简单、快速,基于Jsp的模板机制强大、灵活,OpenCms扩展机制可以很好...
packt_用开源项目快速建站实践丛书
OpenCMS入门指南OpenCMS入门指南OpenCMS入门指南OpenCMS入门指南OpenCMS入门指南
Opencms 中文网原创,请下载支持,欢迎转发,请注明来源Opencms 中文网博客
NULL 博文链接:https://snowelf.iteye.com/blog/739060
主要讲述在opencms下apache和tomcat配置,去掉两个opencms
opencms 9.0.1 汉化资源包,少量部分汉化不完全
opencms二次开发
朗华opencms ofbiz 结合包
OPENCMS google地图继承模块
opencms, content management system, 7.0.5, 由于上传大小限制,分成了两部分,这是第一部分