스킬/개인서버

HTTP/HTTPS 상호 전환 리다이렉트(redirect) PHP방법과 서버 .conf 방법

GET2 2023. 6. 7. 02:33
728x90
반응형

HOXY 이 방법으로 http://내도메인 -> https://내도메인 리다이렉트 시켰을 때 SSL인증이 된다고 여기시면 안됩니다.

SSL인증은 유료 인증서 또는 무료인 Lets encrypt 를 이용하여 인증서를 서버에 설치하고 도메인과 연결하세요~

 

이 방법은 인증서가 설치된 서버의 도메인으로 인터넷창을 통해 접속 했을 때 http://도메인 을 잘못 타이핑 해도 https://도메인 으로 잘 연결되도록 도움을 주기 위한 방법입니다.

 

역으로 인증서가 설치되지 않은 서버의 도메인(http://도메인)을 접속 할 때 의도치 않게 https://도메인으로 타이핑 되어 접속 할 때 아래와 같은 무시무시한 경고문을 보여주지 않기 위해서입니다.

SSL 미인증 도메인 접속시 경고문구

HTTP -> HTTPS 리다이렉트 방법

-아파치 서버 .conf 에서 리다이렉트 방법 

↘↘↘↘↘↘↘↘↘↘↘↘↘ 더 보기 클릭

더보기
1.아파치가 설치된 폴더에서 httpd-vhosts.conf 파일을 찾아서 편집기로 열어주세요.
(아파치설치폴더\apache2\conf\extra\httpd-vhosts.conf)

2.아래와 같이 상황에 맞춰 코드를 추가합니다.
2-1.상황1: 1개의 서버에 1개의 도메인만 운영중인 경우 아래의 코드를 그대로 httpd-vhosts.conf 최하단에 넣어주세요.
	<IfModule mod_rewrite.c>
		RewriteEngine On
		RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
	</IfModule>
2-2 상황2 : 1개의 서버에 여러개의 도메인(홈페이지)을 운영중이라면 아래처럼 가상호스트 선언 블럭마다 "#HTTP -> HTTPS 리다이렉트" 문구 아래의 2줄을 가상호스트 선언 코드에 끼어 넣으세요.
	RewriteEngine on
	RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
    
아래는 예시입니다.
    
<VirtualHost *:80>
	ServerName 내도메인.kr
	ServerAlias www.내도메인.kr
	DocumentRoot "C:/Bitnami/wampstack-8.1.10-0/apache2/htdocs/내도메인홈페이지폴더"
	ErrorLog "logs/내도메인이름-error.log"
	CustomLog "logs/내도메인이름-access.log" common
	#HTTP -> HTTPS 리다이렉트
	RewriteEngine on
	RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>


🛑 .conf 파일을 수정 완료하고 나면 꼭 아파치 서버를 재시작 해주셔야 올바르게 적용됩니다! 🛑

 

-php 문서로 리다이렉트 방법

↘↘↘↘↘↘↘↘↘↘↘↘↘ 더 보기 클릭

더보기
1.아래의 코드를 php 문서로 만들어주세요.

<?php
/* HTTP 접속 시 HTTPS로 리다이렉트 */
if(!isset($_SERVER["HTTPS"]))
{
header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"], true, 301);
exit;
}
?>


2.코드를 만든 php문서를 index 파일에서 항상 빨아오도록 include 해주세요. 저는 위 코드를 "_head.php"라는 파일로 만들었고 index 파일에서 아래와 같이 빨아옵니다.

<?php
include "./conf/_head.php";
?>
<!DOCTYPE html>
<html>
<head>
~~~~여러분의 웹사이트 내용~~~~

 

 


이제 역으로 HTTPS -> HTTP 리다이렉트 방법으로 갈게요~

-아파치 서버 .conf 에서 리다이렉트 방법

↘↘↘↘↘↘↘↘↘↘↘↘↘ 더 보기 클릭

더보기
1.아파치가 설치된 폴더에서 httpd-vhosts.conf 파일을 찾아서 편집기로 열어주세요.
(아파치설치폴더\apache2\conf\extra\httpd-vhosts.conf)

2.아래와 같이 상황에 맞춰 코드를 추가합니다.
2-1.상황1: 1개의 서버에 1개의 도메인만 운영중인 경우 아래의 코드를 그대로 httpd-vhosts.conf 최하단에 넣어주세요.
	<IfModule mod_rewrite.c>
		RewriteEngine On
		RewriteCond %{HTTPS} on
        RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
	</IfModule>
2-2 상황2 : 1개의 서버에 여러개의 도메인(홈페이지)을 운영중이라면 아래처럼 "#HTTPS -> HTTP 역 리다이렉트" 문구 아래의 3줄을 가상호스트 선언 코드에 끼어 넣으세요.
	RewriteEngine On
	RewriteCond %{HTTPS} on
	RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
    
    위에 3줄을 아래처럼 적용하세요.

<VirtualHost *:443>
	ServerName 내도메인
	ServerAlias www.내도메인.kr
	SSLEngine on
	SSLCertificateFile "C:/Certbot/live/내SSL인증폴더/fullchain.pem"
	SSLCertificateKeyFile "C:/Certbot/live/내SSL인증폴더/privkey.pem"
	#HTTPS -> HTTP 역 리다이렉트
	RewriteEngine On
	RewriteCond %{HTTPS} on
	RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

🛑 .conf 파일을 수정 완료하고 나면 꼭 아파치 서버를 재시작 해주셔야 올바르게 적용됩니다! 🛑

 

-php 문서로 리다이렉트 방법

↘↘↘↘↘↘↘↘↘↘↘↘↘ 더 보기 클릭

더보기
안타깝게도 php 파일로 https -> http 강제 리다이렉트 기능은 불가능합니다.😂
유효한 인증서가 설치되지 않은 서버/도메인인데 https로 접속하는 경우 무조건 보안경고가 뜨는게 1순위 프로세스인것 같습니다.
이 부분 해결하신 분이 있다면 댓글로 도움 부탁드립니다!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형