如何使用 ssl Apache 将 www.subdomain 重定向到子域
How to redirect www.subdomain to subdomain with ssl Apache
我想将 http://www.subdomain.domain.com/
重定向到 https://subdomain.domain.com
首先我要向你解释我有什么,然后我做了什么,以及发生了什么。
这是我的:
我在 tomcat 上有一个 运行 的 Web 应用程序,我使用 Apache2 作为该应用程序的代理。
我有一个域,我们称它为 mydomain.com
,Web 应用程序的主要 url 是 suba.mydomain.com
(mydomain.com
和 www.mydomain.com
已被使用另一件事)。我还有 *.mydomain.com
的 SSL 通配符。
但我希望发生这种情况:
http://www.suba.mydomain.com
重定向到 https://suba.mydomain.com
这是我试过的:
我尝试将 http://www.suba.mydomain.com
重定向 301 到 https://suba.mydomain.com
并进行重写(不能同时进行)。
结果
当我键入 www.suba.mydomain.com
时,我已成功重定向到 https://suba.mydomain.com
,但是当我尝试在同一网络浏览器中再次执行此操作时,它会显示如下错误:
这是因为网络浏览器试图添加 https://
并尝试加载 *.mydomain.com
SSL 通配符,所以它不会有效。
所以在 Google Chrome 中,如果我转到 chrome://net-internals/#hsts
并删除 suba.mydomain.com
和 www.suba.mydomain.com
并再次尝试输入 www.suba.mydomain.com
我再次成功重定向到 https://suba.mydomain.com
,但如果我再次尝试这样做,它不会工作。
我能做什么?谢谢!
根据您的描述,您的站点 suba.mydomain.com
似乎正在发送 HTTP Strict-Transport-Security 响应 header 和 includeSubDomains
指令。这会导致您的浏览器在您随后访问 http://www.suba.mydomain.com
时执行到站点的 https://
版本的内部重定向,并且您的 Apache 重写规则不会启动,直到与服务器建立连接(这需要SSL 握手即将完成)。
如果您确实使用 includeSubDomains
发送 HSTS header,看看删除它是否有帮助。
这是我怀疑正在发生的事情:
- 您访问
http://www.suba.mydomain.com
,您的重写规则在
Apache 将您重定向到 https://suba.mydomain.com
.
https://suba.mydomain.com
正在发送 HSTS header,很可能
includeSubDomains
,表示未来所有通过不安全方式向 [*.]suba.mydomain.com 发出的请求
http://
可以通过浏览器升级到 https://
。
- 当您再次访问
http://www.suba.mydomain.com
时,由于缓存的 HSTS 设置,浏览器会将您重定向到 https://www.suba.mydomain.com
。
- 您看到此错误是因为
https://www.suba.mydomain.com
与您对 *.mydomain.com
有效的证书不匹配。在建立连接之前,您的 Apache 重写规则不会 运行,这意味着接受证书警告。
- 像您所做的那样从 Chrome 的缓存中删除 HSTS 条目将清除记录,并且您可以在 运行 进入相同的之前访问
http://www.suba.mydomain.com
一次而没有警告问题。
我想将 http://www.subdomain.domain.com/
重定向到 https://subdomain.domain.com
首先我要向你解释我有什么,然后我做了什么,以及发生了什么。
这是我的:
我在 tomcat 上有一个 运行 的 Web 应用程序,我使用 Apache2 作为该应用程序的代理。
我有一个域,我们称它为 mydomain.com
,Web 应用程序的主要 url 是 suba.mydomain.com
(mydomain.com
和 www.mydomain.com
已被使用另一件事)。我还有 *.mydomain.com
的 SSL 通配符。
但我希望发生这种情况:
http://www.suba.mydomain.com
重定向到https://suba.mydomain.com
这是我试过的:
我尝试将 http://www.suba.mydomain.com
重定向 301 到 https://suba.mydomain.com
并进行重写(不能同时进行)。
结果
当我键入 www.suba.mydomain.com
时,我已成功重定向到 https://suba.mydomain.com
,但是当我尝试在同一网络浏览器中再次执行此操作时,它会显示如下错误:
这是因为网络浏览器试图添加 https://
并尝试加载 *.mydomain.com
SSL 通配符,所以它不会有效。
所以在 Google Chrome 中,如果我转到 chrome://net-internals/#hsts
并删除 suba.mydomain.com
和 www.suba.mydomain.com
并再次尝试输入 www.suba.mydomain.com
我再次成功重定向到 https://suba.mydomain.com
,但如果我再次尝试这样做,它不会工作。
我能做什么?谢谢!
根据您的描述,您的站点 suba.mydomain.com
似乎正在发送 HTTP Strict-Transport-Security 响应 header 和 includeSubDomains
指令。这会导致您的浏览器在您随后访问 http://www.suba.mydomain.com
时执行到站点的 https://
版本的内部重定向,并且您的 Apache 重写规则不会启动,直到与服务器建立连接(这需要SSL 握手即将完成)。
如果您确实使用 includeSubDomains
发送 HSTS header,看看删除它是否有帮助。
这是我怀疑正在发生的事情:
- 您访问
http://www.suba.mydomain.com
,您的重写规则在 Apache 将您重定向到https://suba.mydomain.com
. https://suba.mydomain.com
正在发送 HSTS header,很可能includeSubDomains
,表示未来所有通过不安全方式向 [*.]suba.mydomain.com 发出的请求http://
可以通过浏览器升级到https://
。- 当您再次访问
http://www.suba.mydomain.com
时,由于缓存的 HSTS 设置,浏览器会将您重定向到https://www.suba.mydomain.com
。 - 您看到此错误是因为
https://www.suba.mydomain.com
与您对*.mydomain.com
有效的证书不匹配。在建立连接之前,您的 Apache 重写规则不会 运行,这意味着接受证书警告。 - 像您所做的那样从 Chrome 的缓存中删除 HSTS 条目将清除记录,并且您可以在 运行 进入相同的之前访问
http://www.suba.mydomain.com
一次而没有警告问题。