9

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

但是,当我转到 fubar dot com :8080/xyzzy 时,JBoss 显示默认的 404 页面,其中显示它是 JBoss 以及哪个 JBoss 版本。

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

请指教。

4

3 回答 3

9

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

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

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>

在 jboss-web.xml 中将上下文根定义为“/”,所以它是:

<jboss-web>
    <context-root>/</context-root>
</jboss-web>

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

顺便说一句,您是否考虑过让您的应用 Myapp 可以直接从fubar dot com:8080访问?或者更好的是,让 jboss 服务器只能从代理(例如 Apache)访问?这样你也可以避免这个问题。

我希望它有帮助!

于 2012-11-20T22:57:13.823 回答
2

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

现在,如果您访问任何其他 root ,xxyzzzz您希望在此处返回自定义错误页面。

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

除非

  1. 要么你为其他项目配置相同的东西,即xxxyzzz。即将 404 配置也放入其中web.xml

  2. 或者你需要在服务器范围内做一些事情。

如果项目数量较少并且您不希望 URL 与任何项目都不匹配,则第一种解决方案相当简单易行。

如果您想使用第一种解决方案,您知道该怎么做

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

参考这些

使用 jboss as7,全局 web.xml 的自定义消失了。我只能找到一种配置全局 404 错误页面的方法。参考这里。它的工作原理:D

JBoss AS7 的 Apache 中的自定义错误页面

于 2012-11-20T20:43:36.237 回答
1

我相信您将不得不创建自己的页面。JBoss 使用 Tomcat 来处理 Web 请求。

在 Tomcat 中,定义您自己的 404 响应页面的方式是在您的 web.xml 中包含以下代码段(参考 - http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q6

    <error-page>
        <error-code>404</error-code>
        <location>/error/404.html</location>
    </error-page>

mykong @ http://www.mkyong.com/struts/how-to-handle-404-error-in-struts/创建了有关如何使用 struts 执行此操作的详细页面。

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

于 2012-11-20T20:19:17.523 回答