301 .htaccess 中的重定向首先在原始 URL 上发出证书警告



我的站点有证书,但它不是通配符证书。所以这是为了 example.com,而不是为了*.example.com。

我认为这不是问题,我只会通过mod_rewrite将任何访问者重定向到正确的URL:

 RewriteEngine On
 RewriteBase /
 # Following two lines to strip machine name
 RewriteCond %{HTTP_HOST} !^example.com [NC]
 RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [L,R=301]
 # Following two lines make sure the https version is always served
 RewriteCond %{HTTPS} off
 RewriteRule (.*) https://example.com%{REQUEST_URI}  [L,R=301]

现在,重定向实际上有效。当有人输入 https://www.example.com/page 时,他最终会被重定向到 https://example.com/page。

但。。。

浏览器首先显示一条警告,指出 https://www.example.com 不安全。只有当我添加异常时,它才会被重定向到不会给出证书错误的 https://example.com/page......

我在这里做错了什么?

什么都没有。SSL 协商发生在传输 (TCP( 级别,而不是 HTTP(即使使用 SNI 时(,但关键是证书对请求的域无效。当启动连接以www.浏览器将请求证书并将 url 与证书中的CN进行比较,由于它不存在,它将引发警报。

若要解决此问题,您需要一个同时包含服务器名称和服务器别名的证书。您可以尝试一些提供DNS HTTP重定向的DNS提供商,但是现在获得证书非常容易。

相关内容

最新更新