我正在尝试为即将到来的Chrome“非安全显示”v56版本做准备。
我运行一个网站服务: example.com
我给每个客户一个子域的服务: cust1.example.com , cust2.example.com等
几年前,我将服务configuration为接受www.cust1.example.com , www.cust2.example.com等。主要是因为客户总是将“www”添加到所有内容的前面。 我想确保他们得到他们的网站,而不是一个“无效域”的消息。
我购买了通配符SSL证书*.example.com来覆盖客户网站。 显然,这不适用于www.cust1.example.com等。我的大多数客户没有使用HTTPS,所以这不成问题。
现在的浏览器现在迫使https成为一个问题。
我已经尝试使用mod_rewrite来解决这个问题。
RewriteCond %{HTTP_HOST} ^www\.([^\.]+)\.example\.com$ [NC] RewriteCond %{SERVER_PORT} =443 RewriteRule ^(.*)$ https://%1.example.com/$1 [R=302,E=nocache:1,L]
注意:在testing解决scheme时,我使用了302,所以我不会无意中将redirect推入浏览器的caching,并且不能再次更改。
问题是,当您在浏览器中使用HTTPS启动时,从服务器提供的redirect仍然会触发ERR_CERT_COMMON_NAME_INVALID错误,然后才能redirect以删除“www”并转到具有有效证书的页面。
如何在不触发浏览器的不安全响应的情况下删除HTTPSstream量上的“www”前缀?
这会将www.example.comredirect到https://example.com
RewriteEngine On RewriteCond %{HTTPS} =on RewriteCond %{HTTP_HOST} ^www\. RewriteRule ^(.*)$ https://example.com/$1 [R,QSA,L]