[Apache] https로 리다이렉션 설정

곽동규·2024년 6월 7일

Os : Centos 7.X
apache : 2.4.X

http로 들어온 요청을 https로 자동으로 리다이렉션 하는 설정 방법 입니다.

# httpd-vhosts.conf 에서 설정

<VirtualHost *:80>
    ServerName test.io
    ~(생략)
    
    RewriteEngine On
	RewriteCond %{HTTPS} off
	RewriteRule (.*) https://www.test.io%{REQUEST_URI} [R=301,L]
    
</VirtualHost>

위 설정은 test.io 로 들어오는 http 요청에 대해 Rewrite를 적용시켜 www.test.io 로 리다이렉션하겠다는 의미이다.

1. RewriteEngine On

  • Apache의 mod_rewrite 모듈을 활성화합니다. 이 모듈은 URL 재작성과 관련된 규칙을 정의하고 적용하는 데 사용됩니다.

2. RewriteCond %{HTTPS} off

  • 이 조건은 현재 요청이 HTTPS가 아닌 경우에만 아래의 RewriteRule이 적용되도록 합니다. 즉, HTTP 요청일 때만 조건이 참이 됩니다.

  • RewriteCond는 조건을 정의하는 지시어입니다. %{HTTPS}는 서버 변수로, 요청이 HTTPS인지 여부를 나타냅니다. off는 HTTPS가 아닌 상태를 의미합니다.

  • 따라서 이 조건은 현재 요청이 HTTPS가 아닌 경우에만 다음 규칙이 실행되도록 합니다.

3. RewriteRule (.*) https://www.test.io%{REQUEST_URI} [R=301,L]

  • RewriteRule은 URL 재작성 규칙을 정의합니다.

  • (.)는 요청된 모든 URL 경로를 캡처합니다. 정규 표현식에서 .는 모든 문자를 의미하며, 이 경우 URL의 전체 경로를 캡처합니다.

  • https://www.test.io%{REQUEST_URI}는 리다이렉트할 URL을 지정합니다. 여기서 %{REQUEST_URI}는 원래 요청된 URI 경로를 포함합니다. 예를 들어, 요청된 경로가 /path/to/resource인 경우, 최종 리다이렉트 URL은 https://www.test.io/path/to/resource가 됩니다.

  • [R=301,L]은 플래그를 나타냅니다.
    R=301은 리다이렉트 상태 코드를 301 (영구 리다이렉트)로 설정합니다. 301 리다이렉트는 브라우저와 검색 엔진에 이 URL이 영구적으로 이동되었음을 알립니다.
    L은 "Last"를 의미하며, 현재 규칙이 적용된 후 더 이상 다른 규칙을 적용하지 않도록 합니다. 즉, 이 규칙이 마지막으로 실행된다는 것을 의미합니다.

0개의 댓글