IBM HTTP Server v7 - 404自定义错误页面 - (WAS CE)

时间:2018-01-11 21:02:44

标签: apache tomcat ibmhttpserver

你好吗?

我遇到了问题,我的客户要求我在系统维护或宕机时显示一些自定义错误。

当HTTP Server收到503错误时,我没有问题。 问题是当我必须显示相同的维护页面时,我发现404错误。

此错误如下所示,系统架构如下:

- 虚拟机中的HTTP Server v7,具有高可用性负载平衡。 - 在另一个VM中我有WASCE 1和WASCE 2。 - 另一个VM,WASCE 3和WASCE 4。

当HTTP Server收到404错误时,它会显示预定义的Tomcat错误消息

Tomcat default 404 error

即使尝试修改http服务器的httpd.conf文件也没有任何结果。

它完全忽略了诸如“#ErrorDocument 404 /404maintenance.html”或任何类型的重写规则之类的内容。

我找到了一个教程,解释了修改catalina的web.xml文件并放置ej:myNewError404.html可以修改,因为tomcat默认是到达http服务器。

Tutorial link

问题在于,当我这样做时,它会停止向我显示默认的tomcat错误消息,但它会显示一个空白屏幕。 显然我没有在标签位置采取路线。

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

此问题仅在四个WASCE中的任何一个的服务启动时才会发生,但应用程序已停止。

我尝试将文件放在任何地方,但没有结果。如果有人帮忙解决问题,非常感谢。

每个人都很开心!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

你好吗?好吧,我用以下方式解决了我遇到的问题。

根据本教程,有一种方法可以重定向尝试访问应用程序URL的人员,当他们处于维护状态时。

TUTORIAL

在VirtualHost中,我做的第一件事就是让我能够拍摄我们在本地拍摄的图像,因为如果你想要显示一个标签,请尝试使用你的应用程序的网址。

然后我设置以下Alias和以下RewriteRule:

收听0.0.0.0:443

public class RoleDao extends GenericDao {

public int createRole() {
try
    {
       TransactionDefinition def = new DefaultTransactionDefinition();
      TransactionStatus status = transactionManager.getTransaction(def);
    this.methhod1();
    this.methhod2();
    transactionManager.commit(status);

    }
    catch (InvalidResultSetAccessException e) 
    {
    transactionManager.rollback(status);
        throw new RuntimeException(e);
    } 
    catch (DataAccessException e)
    {
    transactionManager.rollback(status);
        throw new RuntimeException(e);
}
}
public class GenericDao{

public int method1() {
try
    {
       ..........
    .........
    }
    catch (InvalidResultSetAccessException e) 
    {
        throw new RuntimeException(e);
    } 
    catch (DataAccessException e)
    {
        throw new RuntimeException(e);
    }
}
public int method2() {
try
    {
       .........
    .........
    }
    catch (InvalidResultSetAccessException e) 
    {
        throw new RuntimeException(e);
    } 
    catch (DataAccessException e)
    {
        throw new RuntimeException(e);
    }
}
}

然后我们要做的是在你的http服务器的htdocs文件夹中创建一个名为serverdown.txt的文件,并使用以下规则,我们要告诉你的是检查该文件夹中是否存在该文件,如果是确实存在,它们被重定向到您的自定义维护文件的所有连接。

<VirtualHost *: 443>

   Alias "/ images" "C: \ IBM \ HTTPServer \ htdocs \ images"
   RewriteRule "/images/(.+)\.png$" "/images/$1.png" [PT]

完成此配置后,以下是使用以下代码创建.bat:

   RewriteCond% {DOCUMENT_ROOT} /serverdown.txt -f
   RewriteRule ^ (. *) $ /404maintenance.html [PT, NC]

通过这种方式,将.bat添加到httpserver的bin文件夹,打开控制台并编写&#34;维护&#34;,这个bat创建文件serverdown.txt并编写&#34; mantenance off& #34;,删除相同的文件。

我希望你有用。此致!

我的httpd.conf文件:

@ECHO OFF
if "% 1" == "on" (
  echo The variable is ON
  echo The variable is ON> C: \ IBM \ HTTPServer \ htdocs \ serverdown.txt
) ELSE (
  echo The variable is OFF
  from C: \ IBM \ HTTPServer \ htdocs \ serverdown.txt