如何定制JBossAS7 404页面

如何定制JBossAS7 404页面,jboss,http-status-code-404,Jboss,Http Status Code 404,我已经在JBossAS 7.1中部署的web应用程序中创建了一个自定义404页面。 因此,如果我的应用程序位于fubar.com:8080/Myapp,并且我转到fubar.com:8080/Myapp/xyzy,我会得到自定义错误页面(在web应用程序的web.xml文件中定义) 然而,当我转到fubar.com:8080/xyzy时,JBoss显示默认的404页面,其中显示了它是JBoss,以及哪个JBoss版本 我需要替换此页面以隐藏此信息 请告知。我相信您必须创建自己的页面。JBoss使

我已经在JBossAS 7.1中部署的web应用程序中创建了一个自定义404页面。 因此,如果我的应用程序位于fubar.com:8080/Myapp,并且我转到fubar.com:8080/Myapp/xyzy,我会得到自定义错误页面(在web应用程序的web.xml文件中定义)

然而,当我转到fubar.com:8080/xyzy时,JBoss显示默认的404页面,其中显示了它是JBoss,以及哪个JBoss版本

我需要替换此页面以隐藏此信息


请告知。

我相信您必须创建自己的页面。JBoss使用Tomcat为web请求提供服务

在Tomcat中,定义自己的404响应页面的方法是在web.xml中包含以下代码段 (参考-)


404
/错误/404.html
mykong@创建了一个关于如何使用struts实现这一点的详细页面


如果您使用的是struts以外的任何其他框架,您应该有一个等效框架。

您的问题:您在
Myapp
web.xml
中定义了自定义错误页。现在,如果您使用root作为
Myapp
访问任何资源,并且请求抛出
404
,它将返回自定义错误页面

现在,如果您要访问任何其他根目录,请在这里
xxyzzzz
返回自定义错误页面

现在,从逻辑上讲,如果您为其他项目配置了一个文件,您不能期望它与其他项目相同

除非

  • 您可以为其他项目配置相同的内容,即
    xxxyzz
    。i、 e.将404配置也放在其
    web.xml

  • 或者您需要在服务器范围内执行某些操作

  • 如果项目数量较少,并且您不希望URL与任何项目都不匹配,那么第一个解决方案相当简单

    如果你想使用第一个解决方案,你知道怎么做

    关于第二种方法。 我可以找到一些对你有帮助的帖子

    参考这些

    有了JBossAS7,global web.xml的定制就不复存在了。 我只能找到一种配置全局404错误页面的方法。请参阅此处。有效:D


    如果您想为JBoss 7中的所有其他上下文(Myapp应用程序配置的一部分)自定义错误页面,您还需要:

    • 要禁用JBoss欢迎页面:在文件standalone/configuration/standalone.xml(或domain/configuration/domain.xml)中,将属性enable welcome root设置为false(默认为true)
    • 然后,您必须部署一个简单的war文件,将其上下文根设置为“/”,并为此war定义错误页面(使用与Myapp相同的方法)。因此,war结构应该类似于(error.war名称是任意的):
    其中web.xml文件为:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>yourcompanyname</display-name>
      <error-page>
                <error-code>404</error-code>
                <location>/error/404.html</location>
      </error-page>
    </web-app>
    
    
    你的公司名
    404
    /错误/404.html
    
    在jboss-web.xml中,将上下文根定义为“/”,因此:

    <jboss-web>
        <context-root>/</context-root>
    </jboss-web>
    
    
    /
    
    文件404.html是Jboss将显示的自定义html错误页面,而不是404默认错误。所有这些,在JBoss7中部署这个应用程序,当您访问fubar.com:8080/yzyqqqa或任何其他根上下文时,您将拥有自定义的404错误页面。请记住,您还必须在Myapp web.xml(以及您可能在服务器中部署的所有其他应用程序)中保留错误配置

    顺便问一下,你有没有考虑过直接从fubar.com:8080访问你的应用程序Myapp?或者更好,让jboss服务器只能通过代理(例如Apache)访问?这样也可以避免这个问题


    我希望有帮助

    这是合乎逻辑的,您可以在
    Myapp
    web.xml
    中定义错误页面。因此,如果404在访问
    Myapp
    中的任何资源时出现,那么Jboss将显示自定义页面。现在,如果访问其他资源时出现错误,那么您希望它如何显示在其他资源中定义的自定义页面?我不确定,全局
    web.xml
    的概念适用于AS7,我已将其用于AS,4,5,6,但决不适用于7。你试过这个吗?我试过我给出的解决方案,它成功了!:-)但是您还必须在容器中部署的其余应用程序中定义error.html页面。它不是一个真正的全局解决方案,而是根上下文“/”的解决方案,这就是为什么您必须为其余的应用程序定义错误页面。
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>yourcompanyname</display-name>
      <error-page>
                <error-code>404</error-code>
                <location>/error/404.html</location>
      </error-page>
    </web-app>
    
    <jboss-web>
        <context-root>/</context-root>
    </jboss-web>