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
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"를 의미하며, 현재 규칙이 적용된 후 더 이상 다른 규칙을 적용하지 않도록 합니다. 즉, 이 규칙이 마지막으로 실행된다는 것을 의미합니다.