BOARD

문제 해결

그누보드 도메인 표준화 및 HTTPS 강제 설정 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 9회 작성일 26-09-24 07:34

본문

그누보드 도메인 표준화 및 HTTPS 강제 설정 방법

그누보드 운영 시 HTTP 접속을 HTTPS로 강제 전환하고 www 유무에 따른 도메인 주소를 통일하는 구체적인 서버(.htaccess) 및 PHP 설정 방법을 제공합니다.

아파치 서버(.htaccess)를 이용한 HTTPS 강제 설정 방법

웹 서버에 SSL(보안인증서)을 설치하더라도 기존 접속 경로는 계속 HTTP로 접근하기 때문에, HTTPS를 기본으로 사용하려면 HTTP로 들어오는 요청을 HTTPS로 강제 전환(301 리다이렉트)하는 설정을 추가해야 합니다.

1. 사전 확인 사항

  • 본 가이드는 서버에 SSL 인증서 설치가 완료되어 https://도메인으로 접근 가능한 상태에서만 활용해야 합니다.
  • 중복 적용 시 무한 리다이렉트가 발생할 수 있으니 주의하세요.

2..htaccess 설정 방법

호스팅 계정의 최상단 디렉터리에 위치한 .htaccess 파일을 열어 RewriteEngine On 설정과 함께 아래의 코드를 추가합니다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS}!=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>

3. 호스팅 환경별 주의 사항

  • 카페24 등 특정 호스팅 환경: 기본 리다이렉트 규칙만 적용할 경우 앞단 프록시 설정이나 서버 환경에 따라 %{HTTPS} 변수가 항상 "off"로 인식되어 무한 루프(ERR_TOO_MANY_REDIRECTS)가 발생할 수 있습니다. 이 경우 카페24 환경에 맞는 아래와 같은 규칙을 적용할 수 있습니다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:HTTPS}!=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>

4. 적용 후 확인 방법

  • 브라우저에서 http://로 시작하는 주소로 접속했을 때 https://로 자동 전환되는지 확인합니다.
  • 주소창의 보안 자물쇠 아이콘이 정상적으로 표시되는지 확인합니다.

HTTPS 강제 설정 시 무한 루프(ERRTOOMANY_REDIRECTS) 해결 방법

카페24 등 일부 호스팅 환경에서는 아파치(Apache) 서버의 % {HTTPS} 변수가 항상 off로 인식되거나, 프록시 환경의 구조적 차이로 인해 HTTPS 접속 여부를 올바르게 판별하지 못해 무한 리다이렉트 루프가 발생할 수 있습니다.

1. 원인 확인

  • 서버 환경에 맞지 않는 일반적인 RewriteCond %{HTTPS} off 규칙만 사용할 경우, 이미 HTTPS로 접속한 상태임에도 조건이 계속 참으로 판별되어 무한 새로고침(백색 먹통 또는 ERR_TOO_MANY_REDIRECTS)이 발생합니다.
  • PHP 7.3 및 7.4 버전 환경 등 일부 호스팅 사양에서는 301 리디렉션 동작이 정상 지원되지 않아 문제가 생길 수 있습니다.

2..htaccess 설정 변경 방법

아파치 서버의 .htaccess 파일에서 서버 변수뿐만 아니라 앞단 프록시가 전달하는 X-Forwarded-Proto 헤더를 함께 확인하도록 조건을 추가해야 합니다.

웹사이트 루트 디렉터리에 있는 .htaccess 파일을 열고 기존 리다이렉트 규칙을 아래 코드로 수정합니다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# 1) 직접 HTTPS로 오지 않았고
RewriteCond %{HTTPS}!=on
# 2) 앞단 프록시(X-Forwarded-Proto 헤더)로도 HTTPS로 오지 않았을 때만 리다이렉트
RewriteCond %{HTTP:X-Forwarded-Proto}!https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>

3. PHP 환경 점검 및 주의사항

  • 중복 적용 금지: .htaccess 파일과 PHP 스크립트(예: common.php 또는 user_config.php) 등에 리다이렉트 규칙을 여러 곳에 중복으로 적용하면 무한 루프가 발생할 수 있으므로 한 곳에서만 명확하게 설정해야 합니다.
  • PHP 7.3 또는 7.4 버전을 사용하는 카페24 호스팅 등에서 301 리디렉션으로 인해 문제가 지속될 경우, PHP 버전 변경(PHP 7.0 또는 PHP 8 이상)을 고려하거나 호스팅 사양에 맞는 설정 방식을 확인해야 합니다.

서버 설정 변경이 어려울 때 PHP를 통한 HTTPS 리다이렉트 방법

아파치 서버의 .htaccess 파일을 수정할 수 없는 환경인 경우, 그누보드 설정 파일과 공통 파일을 수정하여 PHP 코드로 HTTPS 접속을 강제할 수 있습니다.

1. config.php 설정

config.php 파일에서 HTTPS 도메인 상수를 정의합니다.

define('G5_DOMAIN', '');
define('G5_HTTPS_DOMAIN', 'https://도메인.com');

2. common.php 파일 수정

common.php 파일 내부에서 config.php가 인클루드된 직후에 아래의 리다이렉트 코드를 추가합니다.

//https접속이 아닐때 강제로 리다이렉트 or 기존 도메인 접속시 리다이렉트
if(!$_SERVER['HTTPS'] || $_SERVER["HTTP_HOST"]!= '도메인.com'){
 echo"<meta http-equiv='refresh' content='0;url=".G5_HTTPS_DOMAIN.$_SERVER['REQUEST_URI']."'>";
}

도메인 주소의 통일을 위해 www를 강제로 추가하거나 제거하는 규칙은 웹 서버 환경에 따라 다르게 설정할 수 있습니다. 검색 엔진 최적화(SEO)를 위해 도메인을 단일화하는 것이 권장됩니다.

1. Apache 서버 (.htaccess)

호스팅 계정의 루트 디렉터리에 있는 .htaccess 파일에 RewriteEngine을 사용하여 규칙을 작성합니다.

  • www 강제 제거 예시:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
</IfModule>
  • www 강제 추가 예시:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST}!^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301]
</IfModule>

2. PHP 스크립트 활용 (common.php)

서버 설정을 변경하기 어렵거나 그누보드 환경에서 제어할 경우, common.php 상단에 PHP 코드를 삽입하여 처리할 수 있습니다. $_SERVER['HTTP_HOST'] 값을 확인하여 www 포함 여부에 따라 header('Location:...')으로 리다이렉트합니다.

3. 주의사항

  • 무한 루프 방지: 리다이렉트 규칙이 서로 충돌하거나, http에서 https로 이동하는 규칙과 www 통합 규칙이 겹치면 무한 루프가 발생할 수 있습니다. 방향을 하나로 정하고 순서를 조정하십시오.
  • 캐시 문제: 설정 변경 후에도 브라우저가 이전 설정을 기억할 수 있으므로, 시크릿 모드에서 테스트하거나 브라우저 캐시를 삭제한 후 확인하십시오.

상황별 판단 가이드

  • 내 상황: Apache 서버 또는 그누보드 환경에서 SSL 인증서를 설치했으나 http://로 접속되거나 주소가 통일되지 않는 경우
  • 선택 기준: 서버 설정(.htaccess) 권한 보유 여부 및 특정 호스팅(예: 카페24) 프록시 환경 고려
  • 다음 행동:
    1. 서버 설정을 직접 수정할 수 있다면 루트 디렉터리의 .htaccess 파일에 RewriteEngine 규칙을 적용합니다.
    2. 카페24 등 프록시 환경으로 인해 무한 루프가 발생하면 %{HTTPS}!=on 조건과 함께 X-Forwarded-Proto 헤더 검사 규칙을 추가합니다.
    3. 서버 설정 변경이 불가한 경우 그누보드 common.php 또는 config.php 상단에 PHP 리다이렉트 코드를 적용합니다.

실전 FAQ

Q..htaccess에 HTTPS 강제 코드를 넣었는데 사이트가 무한 새로고침되며 접속되지 않습니다.

  • 원인과 예외: 카페24 등 일부 호스팅 환경에서는 앞단 프록시가 요청을 처리하여 Apache의 %{HTTPS} 변수가 항상 off로 인식되므로 이미 HTTPS로 접속한 상태에서도 리다이렉트 조건이 참이 되어 무한 루프가 발생합니다.
  • 대안과 해결: .htaccess 파일에 RewriteCond %{HTTP:X-Forwarded-Proto}!https 조건을 함께 추가하여 프록시 환경에서의 중복 리다이렉트를 방지합니다.

Q. 서버 설정 파일(.htaccess)을 수정할 권한이 없을 때는 어떻게 해야 하나요?

  • 원인과 예외: 웹 서버 설정에 접근할 수 없는 공유 호스팅 환경이 해당됩니다.
  • 대안과 해결: 그누보드 설치 경로의 config.php에 G5_HTTPS_DOMAIN을 설정하고, common.php 파일 상단에서 $_SERVER['HTTPS'] 또는 HTTP_HOST를 확인하여 PHP 스크립트 기반으로 리다이렉트를 처리합니다.

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.