转自:OpenCms中文网 http://www.opencms.org.cn/
关于第一个opencms
第一个opencms 是 应用程序的名称。要去掉这个opencms很简单,有两种方法。
方法一、只需要把[TOMCAT_HOME]/webapps/opencms 改为[TOMCAT_HOME]/webapps/ROOT 就可以了,原来的ROOT目录怎么办?删除改名都可以。我改了个名[TOMCAT_HOME]/webapps/ROOT.bak
方法二、修改TOMCAT的配置文件,server.xml。
重新启动tomcat, 现在只需要输入localhost:8080/opencms/就可以正确访问了。
关于第二个opencms
第二个opencms是servlet的名字。这个名字是可以自定义的比如改成mycms。以下几个简单的步骤就可以实现了。
- 打开$OPENCMS_HOME/WEB-INFO/web.xml
- 修改 名为 "OpenCmsServlet" 的 <context-param> ,从"/opencms/*" 改成"/mycms/*"
- 修改"OpenCmsServlet" 的<servlet-mapping>,从"/opencms/*" 改成"/mycms/*"
- 重新启动TOMCAT,你的opencms url 变成了 localhost:8080/mycms/
修改后的web.xml 类似于
.... <context-param>/ <param-name>OpenCmsServlet</param-name>/ <param-value>/mycms/*</param-value>/ </context-param>
.... <servlet-mapping>/ <servlet-name>OpenCmsServlet</servlet-name> <url-pattern>/mycms/*</url-pattern> </servlet-mapping>
....
啊哈!如果我们把"/opencms/*" 改成"/*",那是不是就可以去掉第二个opencms了。立刻动手试试,很不幸,不可以,opencms会报出一个ServletException。要想去掉第二个opencms,我们只能另想他法了。
我们采用在opencms系统中rewrite 的方法来做
首先,我们需要修改web.xml,修改后的web.xml如下面。
.... <context-param>/ <param-name>OpenCmsServlet</param-name>/ <param-value>/*</param-value>/ </context-param>
.... <servlet-mapping>/ <servlet-name>OpenCmsServlet</servlet-name> <url-pattern>/opencms/*</url-pattern> </servlet-mapping>
....
<filter>
<filter-name>UriRewriteFilter</filter-name>
<filter-class>com.dcampus.opencms.web.UriRewriteFilter</filter-class>
<init-param>
<param-name>ignore-uri</param-name>
<param-value>/opencms/,/resources/,/export/,/setup/,/update/,/webdav/,/opencms-errorhandler/</param-value>
</init-param>
<init-param>
<param-name>prefix</param-name>
<param-value>/opencms</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UriRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
....
其次,我们需要
- wget http://opencms.996256.n3.nabble.com/attachment/10246/0/UriRewriteFilter.java
- javac -cp /usr/local/apache-tomcat-7.0.41/lib/servlet-api.jar UriRewriteFilter.java
- mkdir -p /usr/local/apache-tomcat-7.0.41/webapps/ROOT/WEB-INF/classes/com/dcampus/opencms/web
- cp UriRewriteFilter*.class /usr/local/apache-tomcat-7.0.41/webapps/ROOT/WEB-INF/classes/com/dcampus/opencms/web
最后,我们重新启动TOMCAT。第二个opencms 成功清除。
去掉第二个opencms,参考了https://blog.codecentric.de/en/2013/08/opencms-8-avoiding-opencmsopencms-in-url-2/