2015-04-25 200 views
2

測試的若干建議(如Redirect to external website on Tomcat)後,我仍然不能夠有一個重定向到Tomcat中不存在的web應用的外部URL。一般的Tomcat(V7)404重定向到外部URL

我的情況是這樣的:

  • 的tomcat的URL本地主機上運行
  • 很多目錄的webapps/APP1,的webapps/APP 2,...
  • 一個URL調用運行Web應用程序的在localhost/APP1將打開該應用程序app1
  • localhost上的URL呼叫/ APP2將打開該應用APP2
  • localhost上的URL呼叫將打開APP1(自動重定向Tomcat中配置)

我的目標是實現重定向到一個外部網站http://www.test.com/404.html當有人進入一個網址像本地主機/ ASDF。有沒有一種方法可以在tomcat中全局實現這一點,如在/conf/web.xml中添加errorpage屬性?

在這裏找到答案: How to handle not available Tomcat 7 webapps

+0

可能的重複[如何處理不可用的Tomcat 7 webapps](http://stackoverflow.com/questions/30101895/how-to-handle-not-available-tomcat-7-webapps) – mkn

回答

0

Tomcat的版本=?

你到底要什麼?

答:如果你想在其他地方重定向不存在的Web應用程序,然後配置在ROOT Web應用程序的error-page(又名默認Web應用程序)。

根Web應用程序處理還沒有被其他Web應用程序處理的所有請求。

B.如果你想配置「錯誤404」默認設置在所有Web應用程序處理:

這將是相當困難共享Web應用程序之間的JSP頁面(因人而異),但它是非常輕鬆共享一個servlet。

  • 準備一個執行重定向的servlet。

    E.g.擴展javax.servlet.http.HttpServlet並覆蓋其「服務」方法。事情是這樣的:

    @Override 
    protected void service(HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException { 
    
        // TODO: check that request.getMethod() is one of "GET", "HEAD", "POST"? 
    
        response.sendRedirect("http://www.test.com/404.html"); 
    
        //// Or if you want better control over HTTP status code (302/307/...): 
        // response.reset(); 
        // response.setStatus(302); 
        // response.setHeader("Location", "http://www.test.com/404.html"); 
    } 
    
  • 把你的代碼放到lib目錄的Tomcat —作爲一個罐子或包/類文件樹。

  • 配置在conf/web.xml servlet和它映射到一些URL有,例如/WEB-INF/404

    <servlet> 
        <servlet-name>bar</servlet-name> 
        <servlet-class>foo.Bar</servlet-class> 
    </servlet> 
    <servlet-mapping> 
        <servlet-name>bar</servlet-name> 
        <url-pattern>/WEB-INF/404</url-pattern> 
    </servlet-mapping> 
    
  • 配置error-pageconf/web.xml由這個servlet提供服務的位置。

    <error-page> 
        <error-code>404</error-code> 
        <location>/WEB-INF/404</location> 
    </error-page> 
    

如果這沒有幫助,還可以擴展ErrorReportValve類。