由于太长而且复杂的原因(它涉及多层公司繁文缛节导致其他人没有购买我要求的通配符SSL证书),我必须设置一个域来将所有请求重定向到{{ 3}} - 使用www
子域的安全协议。
所以:https://www.xyz.com,http://xyz.com和http://www.xyz.com应该全部重定向到https://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]
https://www.xyz.com和http://xyz.com都重定向到http://www.xyz.com,所以是的。但是,https://www.xyz.com 不重定向到https://xyz.com,因此会抛出安全警告页面:
这可能不是您要找的网站!
您尝试访问 xyz.com ,但实际上您已经到达了一个服务器,将自己标识为 www.xyz.com 。这可能是由服务器上的配置错误或更严重的问题引起的。您网络上的攻击者可能会试图让您访问 xyz.com 的假(且可能有害)版本。
您不应该继续,特别是如果您之前从未在此网站上看到此警告。
让我超越这一个最后一个驼峰的任何帮助都将非常感激!
答案 0 :(得分: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
答案 1 :(得分:5)
如果未来的任何人(HELLO PEOPLE OF THE FUTURE)偶然发现了这个问题,我会问同样的问题并在服务器故障中得到解答。
短版:不可能。
答案 2 :(得分: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]
修复了没有任何循环或其他错误的问题。也许它会帮助别人。
答案 3 :(得分:0)
我真不明白@scottie链接说“不可能”是被接受的答案。
我在我的3个网站(provided here的Erik)上使用以下代码,它成功使 http://example.com,http://www.example.com,https://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
我希望这也能帮助像我这样的人,他们可能认为这是一个漫长的过程,如果有什么缺点我不知道,请告诉我。