`

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行,有以下一段代码:
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都有好处。

顺便说一句,如果你觉得发布一次时间太长,可以尝试一下,静态导出单个发布的资源,opencms wiki上面有一篇文章 ,写得很详细,我就不敷述了。

 

1
0
分享到:
评论
2 楼 BigBird2012 2011-07-23  
解决了我一个难题,楼主高手!
1 楼 qinghe3012 2009-07-14  
正是我要找的,赞一个

相关推荐

    opencms静态导出配置

    -- 设置静态导出时是否使用相对 路径 --&gt; &lt;userelativelinks&gt;false &lt;!-- 设置404导出URL的值 --&gt; &lt;exporturl&gt;http://127.0.0.1:8080${CONTEXT_NAME}/handle404 &lt;!-- 暂不清楚此项作用 --&gt; ...

    opencms路径去掉两个opencms的方法总结

    例如,将OpenCMS部署到Web服务器的根目录下,而不是一个名为`opencms`的子目录。这样,URL自然就不会包含“opencms”了。 4. **使用虚拟主机** - 如果你的服务器支持虚拟主机配置,可以创建一个新的虚拟主机,将...

    opencms应用中去掉路径中的两个/opencms

    干货,opencms应用中去掉路径中两个/opencms。利用urlrewritefilter,网上方法走不通,自己琢磨得出,完美去除。官方文档中方法会带来一些问题。 学习过程中使用了很多积分,各位不缺的话,支援下。实在没有积分又很...

    opencms 去掉两个/opemcms路径的方法

    标题 "opencms 去掉两个/opencms路径的方法" 涉及的是在OpenCMS系统中修改URL结构的问题,通常是为了优化用户体验和搜索引擎优化(SEO)。OpenCMS是一款开源的内容管理系统,它允许用户通过Web界面创建、管理和发布...

    opencms

    《OpenCms开发指南》:深入理解与定制OpenCms OpenCms是一款开源的内容管理系统,旨在为企业级网站提供高效、灵活的管理解决方案。由Alkacon Software开发,OpenCms支持多语言、多站点管理和内容版本控制等功能,是...

    OpenCMS

    ### OpenCMS:构建网站的新选择 #### 一、OpenCMS简介与特性 OpenCMS是一款功能强大的开源内容管理系统(Content Management System, CMS),它主要用于构建、管理和维护企业级网站。该系统支持多语言、多用户和多...

    OpenCms 7 Development(最好的OpenCms二次开发资料)

    1. **内容创建与管理**:书中详细讲解了OpenCms的内容模型,如何创建和编辑内容,以及如何设置内容的权限和访问控制。此外,还会介绍如何使用OpenCms的工作流程模块,实现内容的审核和发布流程。 2. **模板系统**:...

    opencms9 java api

    OpenCMS 是一个开源的内容管理系统(CMS),主要由Java语言开发,专为构建企业级网站提供了一个强大而灵活的平台。其Java API 提供了丰富的功能,使得开发者可以通过编程方式与OpenCMS系统进行交互,实现内容的创建...

    OpenCms中文文档完整版

    文档内容包括安装与配置、模板设计、内容创建、工作流管理、安全设置等多个方面,旨在帮助用户无语言障碍地理解和应用OpenCms。 1. **安装与配置**:OpenCms的安装过程简单明了,文档详细介绍了所需的软件环境,如...

    opencms整理

    这里将OpenCMS的应用基础路径设置为`ROOT`,并启用了自动重载功能。 3. **添加端口映射**:为了确保OpenCMS能够通过不同的端口访问,还需要在`&lt;Service&gt;`标签内添加两个`&lt;Connector&gt;`标签,分别用于监听8081和8082...

    OpenCms创建网站过程图解——献给OpenCms的初学者们

    其中`docBase`路径应指向OpenCms的安装目录。 #### 五、修改OpenCms配置文件 1. **定位配置文件**:找到`tomcat/webapps/cms623/WEB-INF/config/opencms-system.xml`文件。 2. **增加配置**:在文件中增加以下...

    opencms 内容管理入门指南

    **OpenCMS内容管理入门指南** OpenCMS是一款开源的内容管理系统(CMS),它提供了强大的网站内容创建、管理和发布的功能。本入门指南将带你深入了解OpenCMS的基本概念、安装部署过程以及开发实践,帮助你快速掌握这...

    如何创建OpenCms后台管理模块

    - **创建源代码目录**:在你的开发环境中(如Eclipse或IntelliJ IDEA)创建一个新的Java项目,并设置好OpenCms的类路径依赖。 - **编写模块XML配置**:创建`module.xml`文件,指定模块的基本信息,如名称、版本、...

    OpenCms中文用户手册

    1. **安装与配置**:首先,手册会介绍如何在服务器上下载、安装OpenCms以及设置必要的环境。这可能涉及Java运行环境(JRE或JDK)、数据库连接(如MySQL、Oracle)以及Web服务器(如Tomcat、Jetty)的配置。 2. **...

    opencms9 汉化包

    系统目录下通常会有多个子目录,每个子目录对应OpenCMS的不同模块或功能,比如administration(后台管理)、templates(模板)、resources(资源)等。这些子目录中的文件可能是XML配置文件、图片、CSS样式表或者...

    opencms 9.0.1 汉化包

    `system`目录下的文件结构可能与OpenCMS的模块结构相对应,比如`localization`子目录可能包含不同语言的翻译文件,`templates`可能有汉化的页面模板,而`classes`则可能包含汉化后的Java类。 在使用这个汉化包时,...

    OpenCms 内容类型模块

    在学习和使用 OpenCms 内容类型模块时,开发者需要了解如何创建和配置内容类型,包括定义字段、设置权限、建立关联关系以及编写对应的模板。同时,掌握 XML 和 Java 编程也是必要的,因为 OpenCms 的许多定制化工作...

    Building Websites with OpenCms

    在安装过程中,需要注意配置合适的环境变量、数据库连接信息以及服务器设置,确保OpenCms能正常运行。 三、内容管理 OpenCms的内容管理界面允许用户创建、编辑、发布和管理网页内容。内容可以是文本、图片、视频等...

Global site tag (gtag.js) - Google Analytics