2016-11-09 119 views
3

我們的應用程序需要將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」。但我不知道這意味着什麼,如果這與它有關。 –

回答

2

你的情況並不罕見。試試這個(X-Forwarded-Proto是用於標識HTTP請求的發起協議事實上的標準):

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

感謝您的回答,但不幸的是,這也觸發了一個無限循環。 –