关于OpenCms url 中的两个opencms的研究

转自: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。以下几个简单的步骤就可以实现了。

  1. 打开$OPENCMS_HOME/WEB-INFO/web.xml
  2. 修改 名为 "OpenCmsServlet"  的 <context-param> ,从"/opencms/*" 改成"/mycms/*"
  3. 修改"OpenCmsServlet" 的<servlet-mapping>,从"/opencms/*" 改成"/mycms/*"
  4. 重新启动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>
....

其次,我们需要

  1. wget http://opencms.996256.n3.nabble.com/attachment/10246/0/UriRewriteFilter.java
  2. javac -cp /usr/local/apache-tomcat-7.0.41/lib/servlet-api.jar UriRewriteFilter.java
  3. mkdir -p /usr/local/apache-tomcat-7.0.41/webapps/ROOT/WEB-INF/classes/com/dcampus/opencms/web
  4. 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/

你可能感兴趣的:(关于OpenCms url 中的两个opencms的研究)