2010年12月23日 星期四

Tomcat實現HTTP自動導到"403.4 - 禁止"錯誤頁面

為什要這樣作呢?因為強制將HTTP自動轉到HTTPS時,有各系統會有莫名的圖示消失,很奇怪,不在server.xml設定強制轉時,不論是用HTTP或HTTPS訪問都沒問題,甚至HTTP停用只保留HTTPS來訪問也沒問題,真的很奇怪
為了強制使用者用HTTPS來訪問,而用HTTP時會有錯誤頁面告知,模擬IIS的一個功能(必須使用安全通道SSL),IIS做很簡單,Tomcat實現同樣功能就有點複雜了,我只試出如下做法,如各位有更佳作法請告知

1.首先去某個安裝有IIS的Server將403-4.htm拷貝出來,位置大概是在C:\WINDOWS\Help\iisHelp\common\下

2.在安裝有Tomcat的Server上,在C槽建立testweb資料夾,將403-4.htm拷貝到testweb下,並更名為index.html

3.在此資料夾下再建立WEB-INF子資料夾,然後去拷貝Tomcat安裝目錄下webapps\ROOT\WEB-INF\web.xml過來

4.編輯此web.xml檔,路徑應是在C:\testweb\WEB-INF\下的,在</web-app>之上,加入如下的code,作用是404錯誤導向用的,只適用此WEB
<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>
5.編輯Tomcat安裝目錄下conf\server.xml,在</Server>之上,加入如下的code,以新增虛擬站台
<Service name="Sample"> 
 <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000" />
    <Engine name="Sample" defaultHost="localhost"> 
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
             resourceName="UserDatabase"/> 
      <Host name="localhost" appBase="C:\testweb
       unpackWARs="true" autoDeploy="true" 
       xmlValidation="false" xmlNamespaceAware="false">
  <Context path="/" docBase="C:\testweb" debug="0" reloadable="true" crossContext="true"/>    
      </Host> 
    </Engine> 
  </Service> 
6.存檔後,重啟Tomcat
7.訪問http://domain/看看,應該會自動轉向"403.4 - 禁止"錯誤頁面囉

0 意見:

張貼留言