2014-08-29 3 views
0

원하는대로 HTTPS를 작동 시키려고했으나 운이 없었습니다. 내가하고 싶은 것은 웹 사이트가 http, https가 특정 URL에 연결되기를 원한다는 것입니다. 특정 URL은 : reg.php & glomtpass.php입니다.Htaccess, Apache, OpenSSL의 특정 페이지에만 HTTPS가 있습니다.

그러나 코드를 시도하면 "이 웹 페이지에 리디렉션 루프가 있습니다."라고 표시됩니다. 시도한 후에도 여전히 그 오류가 있습니다.

는 HTTP -> HTTPS 코드 내가 지금 .htacess에서 사용

RewriteCond %{HTTPS} on 
RewriteCond %{SCRIPT_FILENAME} !\/(reg|glomtpass)\.php [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] 

이 어떤 도움이

을 감사합니다!

+0

확실하지 않지만 여기에서 강조 표시 한 내용을 보면 재 작성 규칙의 //을 이스케이프 처리해야합니까? – CarCzar

+0

모든 페이지에 필요한 기능 파일이 있습니까? (그렇다면 재 작성을 포함하지 않는 멋진 솔루션이 있습니다.) – Mic1780

+0

@ Mic1780 현재 모든 페이지에 기능 파일이 없지만 하나만 사용하여 시작할 수 있습니다. – Hampeee

답변

-1

페이지 상단에 기능 파일을 추가하는 것이 그리 어렵지 않다면이 방법으로 PHP에서 HTTPS로 이동을 체크 인합니다. 이것을 사용하려면 모든 스크립트에이 파일을 넣으면됩니다.

기능은 이것이 할 것입니다 것은이 HTTPS로 요청하지 않은 경우 HTTPS로 이동할 수와 $scriptsWithSSL 배열 내에서 발견 된 모든 스크립트입니다

<?php 

$scriptsWithSSL = array('reg.php','glomtpass.php'); 
if (in_array(end(explode('/', $_SERVER['PHP_SELF'])), $scriptsWithSSL) === true) { 
    //we are on a page we want to be HTTPS. will become HTTPS if requested with HTTP 
    if ($_SERVER['HTTPS'] == '' || $_SERVER['HTTPS'] == 'off') { 
     header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . $_SERVER['QUERY_STRING']); 
     exit; 
    } 
} else { 
    //page should not be HTTPS and will move to HTTP if requested with HTTPS 
    if (strtolower($_SERVER['HTTPS']) == 'on') { 
     header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . $_SERVER['QUERY_STRING']); 
     exit; 
    } 
} 
?> 

파일. 그렇지 않으면 일반 페이지이며 HTTP가 HTTP에서 요청되지 않은 경우 HTTPS에서 HTTP로 이동합니다.

+0

나는 당신의 도움에 정말로 감사하지만 마지막 하나도 효과가 없습니다. Internet Explorer 11.0.9에서는 작동하지만 Google 크롬이나 Opera에서는 작동하지 않습니다. – Hampeee

+0

문제가있는 페이지로 연결되는 링크를 제공 할 수 있습니까? – Mic1780

+0

오 그 재 작성 규칙이 있습니까? 무한 루프가 발생할 수 있습니다. – Mic1780

관련 문제