2016-11-09 11 views
3

HTTPリクエストをHTTPSにリダイレクトする必要があります。 通常、以下のようにRewriteCondを使用します。 ポートが常に80の場合にHTTP> HTTPSにリダイレクト

RewriteCond %{HTTPS} off 

私たちの現在のホスティング会社との事は、我々がHTTPまたはHTTPSリクエストを送信する場合、要求されたポートは、常にそれが問題doens't 80で、$_SERVER['SERVER_PORT']は常に80

我々が扱うことができるということですこれはPHPですが、ファイルを強制的にHTTPSにします。

具体的な質問です。とにかくHTTPSRewriteCond %{HTTPS}またはRewriteCond %{SERVER_PORT}のようなものを使わずに.htaccessに強制していますか?

+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

あなたの答えをありがとうが、残念なことにこれも無限ループを引き起こします。 –

関連する問題