我如何强制https:// www。我的域名版本重定向到非www https网址?

时间:2015-09-21 16:21:06

标签: apache .htaccess mod-rewrite redirect

我正在尝试让我的域名始终重定向到非www版本并始终使用https。我找到了this answer,但它只是有用的。

如果我尝试以下任何一种方法,它会起作用:

http://domain.com (This will redirect properly to https://domain.com)
http://www.domain.com (This will redirect properly to https://domain.com)
https://domain.com (This does nothing as it is already correct)

但是,如果我输入https://www.domain.com,那么我会收到一个错误,即该域名不安全且不会重定向。

这是我的.htaccess规则:

############ START [ENABLE REWRITE ENGINE] ############
RewriteEngine On
RewriteBase /
############  END [ENABLE REWRITE ENGINE]  ############

############ START [FORCE NON-WWW AND HTTPS] ############
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]
############  END [FORCE NON-WWW AND HTTPS]  ############

我知道一个选择就是为www购买SSL。该域名的版本,但如果可能,我宁愿省钱。

1 个答案:

答案 0 :(得分:3)

由于HTTPS协商在发出任何请求之前发生,因此您无法在证书名称不匹配时重定向到正确的主机名。您可以获得具有www和域作为主题备用名称的廉价SSL证书。