当端口始终为80时,重定向HTTP> HTTPS

问题描述:

我们的应用程序需要将HTTP请求重定向到HTTPS。 通常我会使用如下的RewriteCond当端口始终为80时,重定向HTTP> HTTPS

RewriteCond %{HTTPS} off 

与我们目前的托管公司的事情是,所请求的端口总是80.无论好好尝试一下,如果我们发送HTTPHTTPS要求,$_SERVER['SERVER_PORT']始终是80

我们可以处理这在PHP,但我们也想强制文件到HTTPS

所以具体问题。无论如何强迫HTTPS.htaccess没有使用RewriteCondRewriteCond %{HTTPS}RewriteCond %{SERVER_PORT}

+1

你是一个SSL终止代理之后...?该代理是否发送任何指示性HTTP标头,通知您使用的协议......? – deceze

+0

您已指定条件,但未指定适用于该条件的规则。 –

+0

@deceze真的很好的问题。我认为这可能是我们的问题。我认为服务器在代理之后。我在'HTTP'响应中唯一的区别是$ _SERVER ['HTTP_ACCEPT_ENCODING']是不同的。 “HTTPS”请求会添加值“br”。但我不知道这意味着什么,如果这与它有关。 –

你的情况并不罕见。试试这个(X-Forwarded-Proto是用于标识HTTP请求的发起协议事实上的标准):

RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC] 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] 
+0

感谢您的回答,但不幸的是,这也触发了一个无限循环。 –