2012-04-16 2 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] 

이를 효과적으로 루트의 모든/사용자 및/관리자 및/카트 경로 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

같은 Rewrite에서 두 가지 모두 true가 될 수 없으므로 안됩니다. –

+0

그것은 작동하지 않습니다 .... 흠 ... .... – 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]