2016-03-11 113 views
0

这对我来说是永远不可能的。我尝试了很多不同的方法,但他们都没有为我工作。使用.htaccess强制HTTP通信到HTTPS

我想强制所有尝试访问HTTP的流量自动重定向到HTTPS。

我的.htaccess看起来是这样的:如果

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(www.)yourdomainname.com 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

不知道它的相关性,但我的网站上使用Apache一个VPS运行。

如果有人可以帮我解决方案,我做错了什么,将不胜感激。

编辑:这是我的httpd.conf文件:http://pastebin.com/VMYXGi0X

回答

0

这可能是因为有一些路由发生之前,请求实际上得到您的Apache服务器,因此HTTPS可能不存在处理。你可以尝试更换这行:

RewriteCond %{HTTPS} off 

RewriteCond %{HTTP:X-Forwarded-Proto} ^http$ [NC] 

捕获原始协议。

+0

刚刚试过换了这一点,可惜没有结果 –

0

发现问题。

正在关注this指南,我调整了我的httpd.conf中的虚拟主机以适合我的网站。然而,这然后发送我的URL到重定向循环,造成另一个问题。

我随后发现this#1的答案是非常有益的,并解释说亚马逊的X-Forwarded-Proto,像这样:

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R]