본문 바로가기

프로그래밍

PHP 접속주소를 HTTP에서 HTTPS로 강제 포워딩하기

반응형

사용자가 웹사이트 접속시 PHP에서 HTTP 대신 HTTPS로 포워딩하게 위한 안내입니다.
지난 몇 년 동안 HTTPS는 인기가 급상승했는데요. 
특히 구글이 HTTP보다 HTTPS사이트의 순위에 대한 평점을 올리면서 더욱 증가하고 있습니다. 
또한 쇼핑몰의 경우 개인정보를 이용안할시 과태료의 대상이 되기 때문에 꼭 사용 부탁드립니다.

포워딩 하는 방법에는 세가지 방법이 많이 사용됩니다.  
PHP코드를 사용하여 리디렉션 하거나 아파치의 설정을 변경하거나 
아파치 모듈의 mod_rewrite을 사용하는 방법이 있습니다. (이건 .htaccess를 사용하셔도 됩니다.)

1. PHP의 사용

아래의 코드를 index.php의 가장 상단에 사용하시면 됩니다. 

<?php
 
//If the HTTPS is not found to be "on"
if(!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != "on")
{
    //Tell the browser to redirect to the HTTPS URL.
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"], true, 301);
    //Prevent the rest of the script from executing.
    exit;
}

위의 코드는 간단합니다. 
$_SERVER  슈퍼 글로벌 배열의 HTTPS변수를 확인하고 on인지 체크해서 Header로 포워딩 하는 방법입니다. 

2. 아파치 Redirect 사용 

서버관리자의 경우 아파치 설정을 이용하여 추가할 수 있습니다. 일반적으로 HTTP는 80번, HTTPS는 443번 포트를 사용합니다. 

<VirtualHost *:80>
    ServerName www.mywebsite.com
    Redirect / https://www.mywebsite.com/
</VirtualHost >

<VirtualHost *:443>
    ServerName www.mywebsite.com
    #configure your SSL
</VirtualHost >

 

3. 아파치 mod_rewrite 사용

직접 아파치 환경설정파일에 적용해도 되며, 호스팅 사용시 .htaccess 파일에 내용을 기재하면 모든파일에 자동으로 적용됩니다. 

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

 

반응형