如何显示 Tomcat 中部署的应用程序的维护页面?

How to display Maintenance page for my application deployed in Tomcat?

考虑到我在 Tomcat 中部署了多个应用程序。我曾计划对特定应用程序进行维护。所以我想阻止对该特定应用程序的请求并重定向到静态页面,通知用户它正在进行计划维护。

用tomcat配置实现这个,有可能吗? 任何帮助将不胜感激。 谢谢!

我的解决方案依赖于 RewriteValve 的使用,我还没有在其他地方看到过,因此它专供 SO 用户使用。您需要 Tomcat 重新启动才能激活它。

$CATALINA_BASE/conf/server.xml 中的主机定义中添加阀门:

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

编辑或(更有可能)使用以下内容创建 $CATALINA_BASE/conf/Catalina/localhost/rewrite.config 文件:

# for a missing webapp which would be named fewbars
RewriteCond %{REQUEST_PATH} ^/fewbars/.*
RewriteRule ^(.*)$ /maintenance/index.html [R,NC]

# for a deployed webapp named fewbars
RewriteCond %{CONTEXT_PATH} /fewbars
RewriteRule ^(.*)$ /maintenance/index.html [R,NC]

如评论所述,行为取决于 webapp 状态:如果 war 文件和目录已被删除,那么您需要在 REQUEST_PATH 上进行匹配。相反,要隐藏 war 和目录仍然存在的应用程序,它将与 CONTEXT_PATH.

匹配

您了解您需要 $CATALINA_HOME/webapps directory

中的 /maintenance/index.html 文件