我已经在JBoss AS 7.1中部署的Web应用程序中创建了一个自定义404页面。 所以,如果我的应用程序是在fubar dot com:8080 / Myapp,我去fubar dot com:8080 / Myapp / xyzzy,我得到自定义错误页面(在web应用程序的web.xml文件中定义)。< / p>
然而,当我去fubar dot com:8080 / xyzzy时,JBoss会显示默认的404页面,其中披露了它的JBoss和JBoss版本。
我需要替换此页面才能隐藏此信息。
请告知。
答案 0 :(得分:9)
如果要为JBoss 7中的所有其他上下文自定义错误页面,这是Myapp应用程序中的一部分配置,您还可以:
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中将context-root定义为'/',所以它将是:
<jboss-web>
<context-root>/</context-root>
</jboss-web>
文件404.html是您自定义的html错误页面,Jboss将显示而不是404默认错误。总而言之,在JBoss 7中部署此应用程序,当您访问fubar dot com:8080 / yzyqqa或其他任何根上下文时,您将拥有自定义404错误页面。请记住,您还必须将错误配置保留在Myapp web.xml中(以及您可能在服务器中部署的所有其他应用程序中)。
顺便问一下,您是否考虑过直接从 fubar dot com:8080 访问您的应用Myapp?或者甚至更好,使jboss服务器只能从代理(例如Apache)访问?这样你也可以避免这个问题。
我希望它有所帮助!
答案 1 :(得分:2)
您的问题:您在web.xml
的{{1}}中定义了自定义错误页面。现在,如果您使用root Myapp
访问任何资源,并且请求抛出Myapp
,则会返回自定义错误页面。
现在您希望在访问任何其他根目录时,此处404
您想要返回自定义错误页面。
现在逻辑上,如果你为其他项目配置了一个文件,你就不能期望它对其他项目来说是一样的
除非
要么为其他项目配置相同的内容,即xxyzzzz
。即将404配置放在其xxxyzzz
中。
或者您需要在服务器范围内执行某些操作。
第一个解决方案非常简单,只要项目数量较少而且您不希望URL与任何项目都不匹配。
如果您想使用第一个解决方案,您就知道该怎么做了
关于第二种方法。 我可以找到一些对你有帮助的帖子
参考这些
使用jboss as7,全局web.xml的自定义已经消失。 我只能找到一种配置全局404错误页面的方法。请参考这里。它的工作原理:D
答案 2 :(得分: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>
有关如何使用struts执行此操作的详细信息页面由mykong @ http://www.mkyong.com/struts/how-to-handle-404-error-in-struts/创建。
如果您使用的是除struts之外的任何其他框架,则应该具有等效的。