所以我有一个网站(我使用 nginx)。我可以连接到https://example.com很好。但如果我连接到https://www.example.com然后它说连接已加密,但页面上的资源未加密。页面上没有资源(无论是否有“www”,页面都完全相同)。
我唯一能想到的可能是 cookie 可能没有加密?
我如何才能找出问题所在以及如何解决它(当然,我需要先找出问题所在)。
答案1
您描述的错误与用于访问网站的主机名无关(您会收到不同的错误,指出证书颁发给了不同的名称)。要解决该问题,请尝试以下列出的解决方案:http://www.sslshopper.com/article-stop-the-page-contains-secure-and-nonsecure-items-warning.html
答案2
如果您的 SSL 证书适用于 www.example.com,则它将不适用于 example.com,反之亦然。SSL 证书仅适用于特定域(在这种情况下,www.example.com 被视为特定子域)。
解决此问题的唯一方法是获取可在 www.example.com 和 example.com 上使用的通配符 SSL 证书。
答案3
如果你没有通配符 SSL 证书,您可以使用 mod_rewrite 将对 example.com 的任何请求重写为 www.example.com。
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} !^www\.example.com [NC]
RewriteRule ^(.*) https://www.example.com/$1 [L,R=301]