使用.htaccess强制HTTP流量到HTTPS

时间:2016-03-11 17:04:31

标签: .htaccess mod-rewrite 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

2 个答案:

答案 0 :(得分:0)

在请求实际到达您的apache服务器之前,可能会发生一些路由,因此可能无法在那里处理HTTPS。您可以尝试替换此行:

RewriteCond %{HTTPS} off

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

捕获原始协议。

答案 1 :(得分:0)

发现问题。

按照this指南,我调整了httpd.conf中的虚拟主机以适合我的网站。然而,这会将我的URL发送到重定向循环,从而产生另一个问题。

然后我发现this Stackoverflow的回答非常有用,解释说亚马逊X-Forwarded-Proto就像这样:

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