【问题标题】:Forcing HTTP traffic to HTTPS using .htaccess使用 .htaccess 将 HTTP 流量强制为 HTTPS
【发布时间】:2016-06-27 00:52:12
【问题描述】:

对我来说,这是我永远做不到的事情。我尝试了很多不同的方法,但似乎没有一个对我有用。

我想强制所有尝试访问 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

【问题讨论】:

    标签: .htaccess mod-rewrite https


    【解决方案1】:

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

    RewriteCond %{HTTPS} off
    

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

    捕获原始协议。

    【讨论】:

    • 刚刚尝试换掉,很遗憾没有结果
    【解决方案2】:

    找到问题了。

    按照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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-06
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多