0

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

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

重新启动后,我们的基本http://server.url被正确重定向到https://server.url。所以我们知道 tomcat 正在识别对 context.xml 和 rewrite.config 文件的更改。

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

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

4

1 回答 1

0

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

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

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

于 2022-01-26T11:29:02.837 回答