2011-12-07 16 views
0

私のApacheサーバ用のmod_rewriteルールを作成しようとしています。私の必要条件は、サーバー上に3つのWebアプリケーションがあり、そこからHTTPスキームへのすべての要求をHTTPSにリダイレクトする必要があるということです。Apache modの書き換えルールの問題

は、ここで私が書いたものだ:

RewriteEngine On 

RewriteCond $1 ^abc$ [NC] 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R] 

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 

これは正常に動作しているようだしません。私はabc HTTPで実行し、他のすべての要求をHTTPS URLにリダイレクトするために実行しようとしています。

誰でも私が間違っていることを教えてもらえますか?

答えて

1

は、私はあなたの最初のルールで問題のカップルを参照してください。

  1. ルールはおそらく一致していない、REQUEST_URIが/abc、ないabcですので。
  2. ルールが一致していれば、無限のリダイレクトループが発生し、クライアントに500の内部サーバーエラーが発生し、ログに "リダイレクトの制限を超えました"というエラーが発生します。問題は、ルールターゲットが元のリクエストと同じであるため、リダイレクトループに入ります。その後、

    RewriteEngine On 
    
    RewriteCond %{HTTPS} off 
    RewriteCond %{REQUEST_URI} !^/abc$ [NC] 
    RewriteRule $ https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 
    

    あなたはまた、HTTPおよびHTTPSではなく上にあるように/ ABC強制する場合:私は、最初のルールを取り除き、そして二番目のルールに/ ABC除外を追加取得をお勧め

2番目のルールを追加することもできます。

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} ^/abc$ [NC] 
RewriteRule $ http://%{HTTP_HOST}%{REQUEST_URI} [L,R] 
+0

ありがとうございます!これはうまくいった。 – Ankit

関連する問題