当端口始终为80时,重定向HTTP> HTTPS
问题描述:
我们的应用程序需要将HTTP
请求重定向到HTTPS
。 通常我会使用如下的RewriteCond
。当端口始终为80时,重定向HTTP> HTTPS
RewriteCond %{HTTPS} off
与我们目前的托管公司的事情是,所请求的端口总是80.无论好好尝试一下,如果我们发送HTTP
或HTTPS
要求,$_SERVER['SERVER_PORT']
始终是80
我们可以处理这在PHP
,但我们也想强制文件到HTTPS
。
所以具体问题。无论如何强迫HTTPS
在.htaccess
没有使用RewriteCond
像RewriteCond %{HTTPS}
或RewriteCond %{SERVER_PORT}
。
答
你的情况并不罕见。试试这个(X-Forwarded-Proto是用于标识HTTP请求的发起协议事实上的标准):
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
+0
感谢您的回答,但不幸的是,这也触发了一个无限循环。 –
你是一个SSL终止代理之后...?该代理是否发送任何指示性HTTP标头,通知您使用的协议......? – deceze
您已指定条件,但未指定适用于该条件的规则。 –
@deceze真的很好的问题。我认为这可能是我们的问题。我认为服务器在代理之后。我在'HTTP'响应中唯一的区别是$ _SERVER ['HTTP_ACCEPT_ENCODING']是不同的。 “HTTPS”请求会添加值“br”。但我不知道这意味着什么,如果这与它有关。 –