7

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

所以:http://xyz.comhttp://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]

http://xyz.comhttp://www.xyz.com都重定向到https://www.xyz.com,所以是的。但是,https://xyz.com不会重定向https://www.xyz.com,因此会引发安全警告页面:

这可能不是您要找的网站!
您试图访问xyz.com,但实际上您访问了一个标识为www.xyz.com的服务器。这可能是由于服务器上的错误配置或更严重的原因造成的。您网络上的攻击者可能正试图让您访问xyz.com的虚假(并且可能有害)版本。
您不应该继续,特别是如果您以前从未看到此站点的此警告。

任何帮助我度过最后一个难关的帮助将不胜感激!

4

4 回答 4

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
于 2013-10-31T06:27:05.043 回答
4

万一未来的任何人(你好未来的人)偶然发现了这个问题,我问了同样的问题,并在服务器故障处得到了回答。

短版:不可能。

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

于 2013-07-22T21:19:16.300 回答
3

尽管这个问题已经很老了。

如果发现它在谷歌上搜索完全相同的问题。在此处提供的代码没有帮助之后。我试了试。

这个对我有用:

     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]

为我解决了这个问题,没有任何循环或其他错误。也许它会帮助别人。

于 2015-05-11T01:38:26.537 回答
0

我真的不明白@scottie链接说不可能是公认的答案。

我在我的 3 个网站上使用以下代码,由Erik在此处提供,它成功地使 http://example.comhttp://www.example.comhttps://example.com都登陆https:// /www.example.com

RewriteEngine On
# ensure www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

PS:我不得不这样做,#RewriteEngine On因为我已经RewriteEngine On在我的开始.htaccess

我希望这也可以帮助像我这样可能认为这是一个非常漫长的过程的人,如果有任何我不知道的缺点,请告诉我。

于 2019-09-24T10:21:45.220 回答