我有一个Apache服务器设置为在端口80上监听几个域,在其中两个域上监听443(至少这是我想要的)。 所以我有我的Virtualhost *:443,带有“my-ssl-domain.com”和“my-other-ssl-domain.com”ServerName。两个域都有一个Virtualhost *:80,只需使用mod_rewrite重定向到HTTPS版本。我正在使用let加密它们。
我还有多个(> 10)其他域,只能通过HTTP工作。
如果我去“https://www.my-non-ssl-domain.com”浏览器抱怨没有有效的证书,会发生什么。谷歌似乎也索引该页面,我想避免它,因为它似乎是糟糕的搜索引擎优化。
我希望301将“https://www.my-non-ssl-domain.com”重定向到“http://www.my-non-ssl-domain.com”或至少根本不回答,就像使用HTTPS的域根本不存在一样。
我该如何解决这个问题?
答案 0 :(得分:0)
如果没有正确的证书,就没有办法对https://
请求做出响应(没有警告),这就是协议的工作原理。
有几种选择,但它们都不适合您:
有两个公共IP地址,一个用于http
+ https
的网站,另一个用于http
。然后将Apache配置为仅在第一个端口443上侦听。
让加密证书成本(几乎)没有任何成本,所以只需去获取所有域名的证书(即使您出于某种原因不想在{{1}上提供内容},至少您可以将访问者正确地重定向到https
网站
我不知道SEO的后果,但是如果你这样配置默认的http
(你需要把它放在第一个由Apache加载的VirtualHost:443中,最好把它放到它位于<VirtualHost *:443>
)的底部:
httpd.conf
在这种情况下,客户端不会收到证书不匹配警告(<VirtualHost *:443>
ServerName non.existing_host.noTld
</VirtualHost>
),由于SSL协议错误(NET::ERR_CERT_COMMON_NAME_INVALID
),它们将被解除连接,这可能会或可能不会更好的SEO,我真的不知道。