我有一台具有多个域名的服务器。既有 http (apache) 流量,也有 http-alt (tomcat) 流量。
如果/当我关闭服务器时,我希望能够将人们重定向到临时的“正在维护”页面,而不管他们的目标 URL/端口如何。
如何实现?我需要在辅助服务器上运行 tomcat 吗?或者有没有办法通过我不知道的某种方法捕获所有流量并重定向?我尝试过简单地将所有 80/8080 流量强制发送到辅助服务器,但根据 URL,它无法解析,并且在尝试访问 :8080/whatever 时它永远无法解析。有什么想法吗?
编辑(更新):我已经成功实现了对所有域和任何端口 80 流量的捕获,使用_default_ vhost
,但它仍然没有在 8080 上捕获任何东西,尽管我指定了:
<VirtualHost _default_:*>
DocumentRoot /var/www
ServerName host
ServerAlias *
ErrorDocument 404 /index.html
</VirtualHost>
有人知道为什么或该怎么办吗?
编辑(更新2):使用 tomcat 的error-code
在 /etc/tomcat/web.xml 中我添加了
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/index.html</location>
</error-page>
我现在可以让它在 tomcat 的根目录下工作http://domain.com:8080但对于一般的 404 错误,则没有类似http://domain.com:8080/nonexistentpath
有什么想法吗?谢谢
答案1
正如我在问题更新中指出的以及上面的评论中所述:
为了处理端口 Apache(端口 80)404,我在 Apache 配置中使用了以下内容:
<VirtualHost _default_:*>
DocumentRoot /var/www
ServerName host
ServerAlias *
ErrorDocument 404 /index.html
</VirtualHost>
为了在 Tomcat(我的情况是 8080)中处理它们,/etc/tomcat/web.xml
我添加了:
<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>
我遇到的唯一另一个问题是 tomcat 404 无法在 IE 上显示。我最终需要向页面添加其他数据以注释的形式给文件增加一些权重,以便 IE 显示我的自定义页面而不是它自己的页面。多么愚蠢。
我希望这能在未来帮助到其他人。