Tomcat 9:http 到 https 的阀门重定向仅适用于基础 URL?

Tomcat 9: valve redirection of http to https only works for base URL?

我们有一个基于 Tomcat 的服务器,其中端口 80 和端口 443 均有效且工作正常。我们最近添加了一个阀来将所有请求从端口 80 重定向到端口 443,具有以下 rewrite.config:

RewriteCond %{SERVER_PORT} =80
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,NE,L]

重启后,我们的基地http://server.url is redirected correctly to https://server.url。所以我们知道 tomcat 正在识别对 context.xml 和 rewrite.config 文件的更改。

但是,如果 URL 中有路径,则重定向不起作用:例如,任何带有 http://server.url/login.html 书签的人都不会重定向到 https。现有功能没有丢失(他们能够登录),只是没有转移到端口 443。

需要哪个阀门规则(模式)来确保所有 URL 的重定向?

RewriteRule 的格式适用于 Tomcat 8,不适合 Tomcat 9。 正确重定向 Tomcat 9 中所有 URL 的等效规则是:

RewriteRule ^/?(.*) https://server.url/ [R,NE,L]

将 server.url 替换为服务器的主机名。