通过htaccess将所有http和https非www URL重定向到https://www.xyz.com

Sco*_*tie 7 .htaccess https redirect http

由于太长而且复杂的原因(它涉及多层公司繁文缛节导致其他人不购买我要求的通配符SSL证书),我必须设置一个域以将所有请求重定向到https:// www .xyz.com - www子域的安全协议.

所以:http://xyz.com,http://www.xyz.comhttps://xyz.com都应该重定向到https://www.xyz.com.

我的.htaccess-fu充其量是弱的,我似乎无法让它发挥作用.注意:如果有所不同,托管在Media Temple上.

到目前为止,我的.htaccess文件看起来像这样:

RewriteEngine On
RewriteCond %{HTTPS} !^on$
RewriteRule (.*) https://www.xyz.com/$1 [R,L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

无论http://xyz.comhttp://www.xyz.com被重定向到https://www.xyz.com,所以耶.然而,https://xyz.com不是重定向到https://www.xyz.com,并因此引发安全警告页面:

这可能不是您要找的网站!
您试图访问xyz.com,但实际上您已经到达了一个服务器,将自己标识为www.xyz.com.这可能是由服务器上的配置错误或更严重的问题引起的.您网络上的攻击者可能会试图让您访问xyz.com的假(且可能有害)版本.
您不应该继续,特别是如果您之前从未见过此网站的此警告.

让我超越这一个最后一个驼峰的任何帮助将非常感谢!

Jun*_*que 9

这是非常可能的.使用以下代码.这对我有用.

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}$1
Run Code Online (Sandbox Code Playgroud)


Sco*_*tie 5

如果未来的任何人(HELLO PEOPLE OF THE FUTURE)偶然发现了这个问题,我会问同样的问题并在服务器故障处得到解决.

短版:不可能.

长版:https://serverfault.com/questions/523199/redirect-all-http-and-https-non-www-urls-to-https-www-example-com-via-htaccess