2016-09-27 9 views
1

こんにちは、ここで私の書き換え条件です:問題がrewriterules

LogLevel alert rewrite:trace3 
RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteRule ^/(myapp)/ - [E=MY_URL:1] 

RewriteCond %{ENV:MY_URL} 1 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} 

私はhttps://www.example.com/myapp/http://www.example.com/myapp/ に行くすべてをリダイレクトしようとしているが、私が無限ループを得ているようだ、私は入れてみました2条件のHTTPSがある場合リダイレクトしないでください、任意の助けていただければ幸いです!私は[R = 301]の部分を理解していないが、それはまだ私にERR_TOO_MANY_REDIRECTSエラー

+0

クライアント側のリダイレクトは行いませんでした。 '' R = 301 ''はありません。純粋に内部書き直しです。それは内部だけなので、あなたはno-sslで来て、あなたのenv varを設定します。そして、そのenv varがまだ設定された状態で、書き換えを再入力します。 –

+0

投稿を更新しました。envを削除しました。 – PaulMB

+0

'r = 301'はhttp 301のリダイレクトヘッダーをクライアントに送信し、「ここに」と言います。ここに新しいhttps URLがあります。それがなければ、あなたは内部の書き換えのみを行い、クライアント自体は非SSLリクエストを使用し続けます。 –

答えて

0

[OK]を与え、次の

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^/myapp 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301] 

に変更し

UPDATE 1 私は友人とこのおかげでそれを把握するlink

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{REQUEST_URI} ^/myapp 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

私はなぜRewriteCond %{HTTPS} offが私のルール(Apache 2.4)で動作しないのか分からないので、代わりに%{HTTP:X-Forwarded-Proto} !httpsを使用しました。