.httaccess 将 SSL 和非 SSL www 重定向到非 www

.httaccess 将 SSL 和非 SSL www 重定向到非 www

我有一个带有子域的 Apache CentOS(最新)站点,我希望普通用户使用 http,并在使用购物车时使用 https;我使用非 www,因此我想将所有 www 重定向到非 www url,如下所示;现在我遇到的问题是 https ssl url;我有一个 ssl 证书(不是通配符),因此我需要将所有 www 重定向到非 www;但我得到了“此连接不受信任”页面,强迫用户接受此证书或退出;接受之后,它将执行重定向;但之前不会,我该如何解决这个问题,以便他们不会看到那个页面?

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

答案1

如果我理解正确的话:

http://yourdomain.com -> no redirect
http://www.yourdomain.com -> redirects to http://yourdomain.com
https://yourdomain.com -> no redirect, works fine
https://www.yourdomain.com -> Untrusted warning, then redirects to https://yourdomain.com

假设我理解正确,这就是 SSL 的本质。如果有人尝试使用“yourdomain.com”证书在任何主机名(而不是“yourdomain.com”)上连接到您的服务器,您将收到此错误。因此,其他人无法连​​接到https://www.yourdomain.com并且不会收到错误(除非您为此注册了一个密钥……这不是您想要做的)。

在这种情况下,或多或少“按预期工作”。访问错误 URL 的人会受到抱怨,直到他们转到正确的 URL。

答案2

如果您只需要支持非 www 和 www 域名,则可以使用一个证书来实现。使用 htaccess 重定向不起作用,您仍然会收到“不受信任”错误。这是一个可以同时使用 https://www.domain.com/ 和 https://domain.com/ 的版本,无需购买两个单独的版本

相关内容