안녕 하세요~일전에 URL과 URI의 차이에 대해 글을 남긴 적이 있어요~


URL과 URI가 대충 똑같은 것으로만 알고 있다가 약간의 차이가 있다는 것을 오늘 남길 소스 덕분에 알게 되었죠~


바로 특정 포트 및 파라메터가 없이 접속할 경우 다른 사이트로 이동 되도록 하는 것인데요~


이 때, 파라메터가 있는지 없는지 판단하기 위해서는 URI의 값을 변수에 셋팅 하여 문자열 검사를 하여야 하는데


전 URL을 변수에 셋팅 하는 바람에 판단할 수가 없었죠ㅠㅠ

($_SERVER["PHP_SELF"]; 함수를 사용 했었거든요~)


말이 길었고~ 


이제 특정 포트 및 파라메터가 없이 접속할 경우 다른 사이트로 이동 하는 소스를 보여 드리겠습니당~

(고수님들이 보시기엔 하찮은 소스이지만 초보들을 위해 남길께요~~)


$pt = $_SERVER['SERVER_PORT']; // 포트 

$param = $_SERVER['REQUEST_URI']; // URI


if($pt == '443' && strpos($param,'?') == false){

echo "<script>

location.href = 'http://www.test.com'

  </script>";


}


먼저 랜딩된 페이지의 변수에 포트와 URI를 담아야겠죠~


그리고 조건문을 통해 예시의 경우 포트가 443(SSL 포트)이면서 PHP 함수인 strpos 함수를 통해 문자열을 검사하여 URI에 ?문자열이 없으면 


http://www.test.com로 이동 하게 됩니다~


이동 구문은 서버단 방식으로 이동 하고 싶다면,


이동 구문을 header('Location: http://www.test.com'); 으로 바꿔 주시면 되겠죠~


그럼 이동이 정상적으로 될 것이라고 보고 그럼 저는 이만~


(참고)

예시의 경우 SSL 포트를 예로 들었는데 로컬에서 테스트 시, SSL의 경우엔 IP가 아닌 도메인이 등록이 되어야 합니다.

당장에 도메인은 가지고 있지 않기 때문에 C:\Windows\System32\drivers\etc\hosts 파일에


127.0.0.1 ksm2u.harry.co.kr 식으로 임의의 도메인을 등록 후 테스트 하면 됩니당~


아!! 물론 SSL 인증서도 로컬 서버에 등록이 되어 있어야 하겠죠~




+ Recent posts