2016-08-22 5 views
0

私はこの分野の知識が不十分であることを許しています。リバースプロキシの後ろにHTTPS/Mod-rewriteを強制する(WordPressで)

まず、私たちの状況:私たちはhttp://www.xxx.ca/x、時にはhttp://www.xxx.ca/x/yは、私たちはいずれかを定義する必要はありません一般的な.htaccessファイルを作成しようとしているhttp://xxx1a.xxx.ca/xまたはhttp://xxx1a.xxx.ca/x/y

に転送されていリバースプロキシを設定していますサブディレクトリ。基本的には、サイト単位でサイトのファイルを変更することなく、サイトの100でこの.htaccessを使用することができます。

この部分が機能しています。しかし、我々はhttpsを強制することができません。私が見ているすべての例はHTTP_HOSTを使用しています。これは元のリクエストではなく、プロキシされたサーバーの値を返します。

おそらく、私たちがセットアップしたものとは全く異なる解決策がありますが、私のApacheの知識は限られています。以下は現在のもので、一般的なサブフォルダの問題を解決しますが、HTTPSの問題は解決しません。

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteBase/
RewriteRule ^index\.php$ - [L] 

RewriteCond %{ENV:URI} ^$ 
RewriteRule ^(.*)$ - [ENV=URI:$1] 

RewriteCond %{ENV:BASE} ^$ 
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$ 
RewriteRule^- [ENV=BASE:%2] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule . %{ENV:BASE}index.php [L,QSA] 
</IfModule> 

もっと良い解決策がある場合は、これを完全に100%変更します。

答えて

-1
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+1

ながら//メタ.stackexchange.com/questions/114762/explain-entire-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。また、コードと説明の両方の可読性が低下するため、説明的なコメントを使用してコードを混乱させないようにしてください。 – FrankerZ

+0

これは動作しません。前述のように、HTTP_HOSTを使用すると、プロキシしている元の要求を保持していないサーバーの値が使用されているようです。 – mcorkum

+0

たとえば、プロキシがwww.example.com/test-> server1.example.com/testの場合、このルールはhttps://server1.example.com/testの代わりにhttps://server1.example.com/testに移動しますが、 //www.example.com/test – mcorkum

0

いつユーザーをhttpsにリダイレクトする必要があるか分かりません。とにかく、あなたがhttpsに切り替えなければならないとき、あなただけのSERVER_PORTサーバー内部変数をチェックすることができ、80でないならば、リダイレクト:このコードスニペットは、([説明を含む]の質問に、解決するかもしれ

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{ENV:URI}/$1 [L,R=301] 
関連する問題