2013-06-11 3 views
1

두 개의 URL에 대해 https로 리디렉션하고 다른 URL에 대해 http로 리디렉션하는 간단한 규칙을 작성하려고합니다. 아래는 현재 설정이지만 리디렉션 루프가 발생합니다. 누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있어요. 요청자가 HTTPS를 표시하지 않은 경우.htaccess ssl 및 non-ssl 리디렉션

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^\/(sign-in|register)+ [NC] 
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L] 

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^\/(sign-in|register)+ [NC] 
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [R=301,L] 

답변

0

이 첫 번째 룰은 그들이 sign-in 또는 register 페이지에 도달하려는 경우에만 HTTPS로 모든 트래픽을 리디렉션됩니다. 요청 및 URL이 sign-in 또는 register하지 않은 경우 HTTPS

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^\/(sign-in|register)+ [NC] 
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L] 

이 두 번째 규칙은 비 SSL에 모든 트래픽을 리디렉션됩니다.

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^\/(sign-in|register)+ [NC] 
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [R=301,L] 

모두 리디렉션 브라우저에 의해 캐시 301 리디렉션, 어떤 시점에서 당신이 실수로 잘못된 위치로 리디렉션하는 경우, 그래서 그 대신 당신이 여기에서 일어나고있는 무슨 사용될 수를 사용합니다.

문제는 로그인 한 후 페이지를 방문하려고하면 HTTPS 밖으로 바로 리디렉션됩니다. 따라서 로그인 디렉토리에서 로그인 요청을 처리하지 않거나 HTTPS에서 다시 리디렉션하는 경우

로그인 또는 등록 폴더에없는 항목이 HTTPS와 HTTP간에 앞뒤로 튀어 나오면 상당한 중복이 발생할 수 있습니다.

+0

내가 겪고있는 문제는 액세스/등록을 시도 할 때입니다. 다시 쓰기 로깅을 설정하고 https/register에 계속 액세스하려고합니다. 내가 달성하기 위해 노력하고있는 것을 바탕으로 다른 사람들에게 http를 등록/로그인하고 강제로 http를 수행하는 것입니다 - 내 규칙을 어떻게 수정해야하는지 알고 있습니까? –

+0

FYI - 등록 양식을 작성하거나 양식에 서명 할 때 항상 같은 URL로 다시 게시합니다. –

+0

로그인 한 후 어떤 디렉토리로 이동합니까? 아니면 SSL을 인증 목적으로 만 사용한 다음 다시 HTTP로 드롭합니까? –