mod_write HTTPS 删除“www”

mod_write HTTPS 删除“www”

我正在为即将发布的 Chrome“非安全显示”v56 版本做准备。

我经营一家网站服务:example.com

我为每个客户提供一个服务子域名:cust1.example.com,,cust2.example.com等等。

几年前,我配置了服务以接受www.cust1.example.comwww.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]

注意:我在测试解决方案时使用 302,这样我就不会意外地将重定向推送到浏览器的缓存中,并且永远不会再更改它。

问题是,当您在浏览器中启动 HTTPS 时,服务器提供的重定向仍然会触发 ERR_CERT_COMMON_NAME_INVALID 错误,然后它才能重定向以删除“www”并进入具有有效证书的页面。

如何在不触发浏览器的不安全回复?

答案1

这会将 www.example.com 重定向到https://example.com

RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://example.com/$1 [R,QSA,L]

相关内容