2012-04-16 4 views
2

私が持っている:.htaccess for SSL?

RewriteCond %{HTTP_HOST} ^MYDOMAIN\.com$ [NC] 
RewriteRule ^(.*)$ http://www.MYDOMAIN.com/$1 [L,R=301] 

RewriteCond %{HTTPS} !=on 
RewriteCond %{REQUEST_URI} ^/(user|admin|cart) 
RewriteRule ^(.*)$ https://www.MYDOMAIN.com/$1 [R=301,L] 

この事実ルートすべて/ユーザおよび/ adminと/カート・パスSSLを使用します。私の問題は逆です。私はあなたがそれらのページにいなければ、HTTP(SSLなし)にリダイレクトするというルールを必要とします。

どうすればよいですか?

+0

**このような質問が充実しています**。この質問のルールを参照してください(実際の質問では答えではありません - 答えは関連する部分です):http://stackoverflow.com/questions/10174278/https-and-http-combined-htaccess – LazyOne

+0

ありません。本当に非SSLを強制するために私が知っているどんな価値もありません。あなたがこれを達成しようとしている理由はありますか? – Anthony

答えて

0

ちょうど逆の状態です!

RewriteCond %{HTTPS} =on 
RewriteCond %{REQUEST_URI} !^/(user|admin|cart) 
RewriteRule ^(.*)$ http://www.MYDOMAIN.com/$1 [R=301,L] 
+0

それを前後に追加しても問題ありませんか? – coderama

+0

同じリライトで実行すると両方が真でないため、実行しないでください。 –

+0

それはうまくいきませんでした... hmmmm .... – coderama

5

まず、ブラウザのキャッシュを完全に消去し、ブラウザを再起動します。次に、.htaccessを次のように置き換えます。

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^MYDOMAIN\.com$ [NC] 
RewriteRule^http://www.MYDOMAIN.com%{REQUEST_URI} [L,R] 

RewriteCond %{HTTPS} !=on 
RewriteRule ^(user|admin|cart)(/.*|)$ https://www.MYDOMAIN.com%{REQUEST_URI} [R,L,NC] 

RewriteCond %{HTTPS} =on 
RewriteRule (?!^(user|admin|cart)(/.*|)$)^.*$ http://www.MYDOMAIN.com%{REQUEST_URI} [R,L,NC] 
+0

私は以前に自分のコードに小さなタイプミスがあったことを認識しました。 Plsは今それを試してみてください。 – anubhava

0

これは機能しますか?私はSETENVはいつもReWriteRule前に処理されませんが、仮に、これはあなたのシナリオのすべてを扱う必要があるため、それがないかもしれ実現:

# Set Correct protocol var based on request: 

## Default to http 
SetEnv correct_protocol http 

## Overwrite to https if secure area 
RewriteCond %{REQUEST_URI} ^/(user|admin|cart) [env=correct_protocol:https] 

# Set Current (Actual) Protocol Env Variable: 

## Again, default to http 
SetEnv current_protocol http 

## Overwrite with https if %{HTTPS} = on 
RewriteCond %{HTTPS} = on [env=current_protocol:https] 

# If current <> correct 
RewriteCond %{ENV:current_protocol} != %{ENV:correct_protocol} 

# rewrite URL using correct: 
RewriteRule .* %{ENV:correct_protocol}://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
関連する問題