본문 바로가기

리눅스

[리눅스] 웹서버 리다이렉트(redirect) 설정

728x90

웹서버 리다이렉트(redirect) 설정

apache 리다이렉트 설정

rewrite 모듈 활성화

httpd.conf 편집

$ vim httpd.conf
...
LoadModule rewrite_module modules/mod_rewrite.so

mod_rewrite.so 모듈 확인

httpd -M | egrep -i rewrite
$ httpd -M | egrep -i rewrite
 rewrite_module (shared)

http -> https 리다이렉트 설정

<VirtualHost *:80>
...

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

...
</VirtualHost>

https -> https 리다이렉트 설정

<VirtualHost *:443>
...

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ https://scbyun.com$1 [R=301,L]
#RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

...
</VirtualHost>

nginx 리다이렉트 설정

http -> https 리다이렉트 설정

server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
...
}

https -> https 리다이렉트 설정

server {
    listen 443 ssl http2;
    server_name sangchul.kr;
    return 301 https://scbyun.com$request_uri;
...
}

Rewrite 코드 상세분석

지시자 설명
RewriteEngine rewriting engine 활성화 여부
RewriteCond RewriteRule과 함께 사용되는 규칙으로 RewriteCond 다음에 오는 RewriteRule은 RewriteCond에서 설정한 패턴과 일치하는 경우만, Rule을 실행한다.
RewriteRule 실질적인 Rewrite 규칙들을 적용하는 지시자.
사용법?   RewriteRule [Input URL] [Return URL]
[Input URL]에는 Perl정규식을 사용할 수 있다. 

Rewrite 지시자 (정규식)

지시자 설명
. 다수의 한 문자
? 0개 이상의 한 문자
* 0개 이상의 문자 또는 문자열
+ 1개 이상의 문자 또는 문자열
(chars) (, ) 안의 문자 또는 문자열을 그룹으로 묶는다.
이 문자 그룹은 [Return URL]에서 $N 의 변수로 활용할 수 있다.
^ 문자열의 첫 문(열)을 지정
$ 문자열의 끝 문자(열)을 지정
\(역슬래쉬) 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거
{n} 정확히 n번 반복
{n,} n번 이상 반복
{n,m} n 이상 m 이하 반복
[chars] 문자들의 범위 또는 표현할 수 있는 문자들을 설정합니다.

예) [a-z] : a 부터 z 까지의 소문자, [tT] : 소문자 t 또는 대문자 T

Rewrite Subrutine 지시자

지시자 설명
L 뒤구문 여부를 무시하고 그 줄에서 끝낸다.
N 새로운 Rule이 시작된다는 의미.
R Redirection. 무조건 넘긴다. 뒤 주소로 넘긴다는 의미.
NC 대소문자를 구별하지 않는다.
OR 프로그래밍의 or와 유사.
QSA Cond의 내용을 지난 결과에 덧붙인다.
NE Out 될 값에 특수문자가 HexCode로 되어 포함된 경우.

예시의 R=301은 moved permanently. 즉, 그 주소로 영구 이동하는 것을 나타낸다.

 

참고URL

- 웹서버에서 http를 https(SSL)로 리다이렉트하는 방법 : https://scbyun.com/861

- URL 재작성 지침서 : https://httpd.apache.org/docs/2.2/ko/misc/rewriteguide.html

- Converting rewrite rules : http://nginx.org/en/docs/http/converting_rewrite_rules.html

- 아파치 http -> https 리다이렉트 설정하기. Rewrite 엔진 : https://cheershennah.tistory.com/157

 

728x90