我想将 http://www.subdomain.domain.com/
重定向到 https://subdomain.domain.com
首先,我将向您解释我有什么,然后我做了什么,以及发生了什么。
这是我的:
我有一个在 tomcat 上运行的 web 应用程序,我使用 Apache2 做该应用程序的代理。
我有一个域,我们称它为 mydomain.com
,webapp 的主要 url 是 suba.mydomain.com
(mydomain.com
和 www.mydomain.com
被用于另一件事)。我还有 *.mydomain.com
的 SSL 通配符。
但我希望这发生:
http://www.suba.mydomain.com
重定向到https://suba.mydomain.com
这是我试过的:
我试图做一个重定向 301 从 http://www.suba.mydomain.com
到 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带有 includeSubDomains
指令的响应 header 。当您随后访问 http://www.suba.mydomain.com
和您的Apache 重写规则在与服务器建立连接之前不会启动(这需要完成 SSL 握手)。
如果您确实在发送带有 includeSubDomains
的 HSTS header ,请查看删除它是否有帮助。
这是我怀疑正在发生的事情:
- 你访问
http://www.suba.mydomain.com
,你的重写规则在 Apache 将您重定向到https://suba.mydomain.com
。 https://suba.mydomain.com
正在发送 HSTS header ,很可能 使用includeSubDomains
,表明所有 future 通过不安全方式向 [*.]suba.mydomain.com 发出的请求http://
可以被浏览器升级为https://
。- 当您再次访问
http://www.suba.mydomain.com
时,浏览器会将您重定向到https://www.suba.mydomain.com
因为缓存的 HSTS 设置。 - 您看到错误是因为
https://www.suba.mydomain.com
与您对*.mydomain.com
有效的证书不匹配。在建立连接之前,您的 Apache 重写规则不会运行,这意味着接受证书警告。 - 像您所做的那样从 Chrome 的缓存中删除 HSTS 条目将清除石板,您可以访问
http://www.suba.mydomain.com
一次而不会出现警告,然后再遇到相同的问题问题。
关于ubuntu - 如何使用 ssl Apache 将 www.subdomain 重定向到子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308443/