我正在尝试让我的域名始终重定向到非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。该域名的版本,但如果可能,我宁愿省钱。
答案 0 :(得分:3)
由于HTTPS协商在发出任何请求之前发生,因此您无法在证书名称不匹配时重定向到正确的主机名。您可以获得具有www和域作为主题备用名称的廉价SSL证书。