【发布时间】:2016-11-10 01:18:17
【问题描述】:
我们的应用程序需要将HTTP 请求重定向到HTTPS。
通常我会使用RewriteCond,如下所示。
RewriteCond %{HTTPS} off
我们目前的托管公司的问题是,请求的端口始终是 80。无论我们发送 HTTP 还是 HTTPS 请求,$_SERVER['SERVER_PORT'] 始终是 80。
我们可以在PHP 处理这个问题,但我们也想强制文件到HTTPS。
所以具体的问题。无论如何要在.htaccess 中强制HTTPS 而不使用RewriteCond 如RewriteCond %{HTTPS} 或RewriteCond %{SERVER_PORT}。
【问题讨论】:
-
您是否在使用 SSL 终止代理...?该代理是否发送任何指示性 HTTP 标头通知您使用的协议...?
-
您已指定条件,但未指定适用于该条件的规则。
-
@deceze 非常好的问题。我想这可能是我们的问题。我认为服务器在代理后面。我在
HTTP响应中可以找到的唯一区别是$_SERVER['HTTP_ACCEPT_ENCODING']不同。HTTPS请求添加值br。但我不知道这意味着什么,以及是否与此有关。 -
您应该与您的主机核实如何检测 HTTPS。除非代理转发该信息,或留下其他特定痕迹,否则这是不可行的。
-
@S.Pols:
RewriteCond %{HTTP:X-Forwarded-SSL} =off适合你吗?
标签: php .htaccess http https url-rewriting