關於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/

發佈了298 篇原創文章 · 獲贊 78 · 訪問量 289萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章