2010-06-15 2 views
0

클라이언트가 로그인 페이지를 https를 통해로드하려고합니다. 이 작업은 쉽게 수행 할 수 있지만 사이트에서 예쁜 URL을 사용하기 때문에 로그인이 끝난 후 주변을 클릭하면 https 모드로 유지됩니다. 이렇게하면 CMS에 업로드되고 웹 루트 위에 저장되며 사용자에게 적절한 권한이있는 경우 PHP 스크립트를 통해 스트리밍하여 다운로드되는 보안 파일이 분리됩니다. 따라서 로그인 페이지에 없을 때 일반 http로 다시 전환해야합니다. 여기에 내 htaccess로 파일에있는 내용은 다음과 같습니다mod_rewrite를 사용하여 특정 페이지에서 강제 SSL을 전환하는 중 문제가 발생했습니다.

RewriteEngine On 
Options +FollowSymLinks 

RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC] 
RewriteRule ^(login\.php|members\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} 
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] 
RewriteRule ^(login\.php|members\.php)$ https://www.%{HTTP_HOST}%{REQUEST_URI} 

RewriteCond %{HTTPS} on 
RewriteCond %{IS_SUBREQ} false 
RewriteRule !^(login\.php|members\.php)$ http://%{HTTP_HOST}%{REQUEST_URI} 

모두는 데이터베이스에 꽤 URL을 조회 코드를 변환하는 핸들 (예쁜 URL의 혼동지고 마지막 줄을 제외하고 잘 작동하고 view.php하기 위해 리디렉션됩니다 ID는 쿼리 문자열에서 사용됩니다). $ 1 또는 경로를 사용하는 경우 {REQUEST_URI}를 사용하고 홈페이지를 사용합니다.

다시 작성하여 HTTP 모드로 다시 전환하는 방법을 고안해야합니다. 꽤 URL 재 작성을 건너 뛰지 만 실제로 작성된 주소가 아닌 실제 주소를 얻는 방법을 모르겠습니다. 아파치에 의해.

미리 감사드립니다.

답변

0
당신은 request line THE_REQUEST에서에서 원래 요청 된 URI 경로 잡을 수

:

RewriteCond %{HTTPS} on 
RewriteCond %{IS_SUBREQ} false 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ ([^ ]+) 
RewriteRule !^(login|members)\.php$ http://%{HTTP_HOST}%1 
관련 문제