【问题标题】:Force HTTPS and strip WWW without receiving Cert error强制 HTTPS 并剥离 WWW 而不会收到 Cert 错误
【发布时间】:2012-08-07 04:53:19
【问题描述】:

我正在开发一个仅拥有 domain.com 的 SSL 证书的网站。我正在尝试删除 www。并重定向到 domain.com。这我工作得很好。

我还想在所有页面上强制使用 HTTPS,如果 www.没有输入。

https://www.domain.com我们的URL出现错误。

我可以看到它重写为https://domain.com,但我收到一个证书错误,我必须接受或拒绝。

有没有办法在不购买其他证书的情况下解决这个问题?

这是我尝试过的众多规则组合中的两个(其中许多来自其他 SO 答案)。

1.

RewriteCond %{HTTP_HOST} ^(www\.)(.+) [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]

2.

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

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

RewriteCond %{SERVER_PORT} !^443
RewriteRule ^ https://domain.com%{REQUEST_URI} [R=301,L]

【问题讨论】:

标签: apache .htaccess mod-rewrite ssl https


【解决方案1】:

我认为没有办法解决这个问题。证书错误来自 SSL (TLS) 连接,发生在任何 HTTP 请求之前。

如果用户转到http://www.domain.com/ 或只是http://domain.com/,您可以重定向到https://domain.com/ 就好了。 如果用户转到https://www.domain.com/,他们会在收到重定向之前收到证书错误。

我认为您的选择是:

  1. 将 www.domain.com 指向禁用了 HTTPS 的服务器。用户在点击https://www.domain.com/ 时会收到连接错误,这可能比证书错误更可取
  2. 为 www.domain.com 或 *.domain.com 购买证书

【讨论】:

  • @FrankFarmer *.domain.com 不会匹配 domain.com。点不是通配符的一部分。
  • @Bruno 你是对的。而且它们显然更贵。跛脚。
  • 我有一种感觉,这就是我要得到的答案。除非我得到一些天才的答案,否则我会将其标记为答案。我会说有人实际输入 https : //www.不太可能,尽管客户当然做到了。谢谢。
猜你喜欢
  • 2016-09-03
  • 2018-08-20
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2017-01-29
  • 1970-01-01
相关资源
最近更新 更多