1. 미들웨어이야기/02. Apache

apache rewrite 설정

알 수 없는 사용자 2014. 8. 29. 16:44

도메인 Redirection 하기

- Rewrite 모듈을 이용하는 방법

<VirtualHost *:80>
DocumentRoot /home/linux
ServerName linux.kr
ServerAlias www.linux.kr
ServerAlias linux.co.kr
ServerAlias www.linux.co.kr
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(linux\.kr|www\.linux\.co\.kr|linux\.co\.kr)
RewriteRule (.*) http://www.linux.kr$1 [R,L]
</VirtualHost>

Rewrite 모듈을 이용하기 위해 필요한 것들에 대해서 알아보자.

Rewrite 를 적용할 수 있는 범위 - 서버 전체에 설정할 수도 있고 특정 호스트에만 적용할 수도 있다.

Rewrite 모듈 지시자

RewriteEngine On / Off
Rewrite 엔진을 사용할지 여부를 설정한다. default는 off이다.
현재 Apache에서 실행중인 모든 RewriteRule을 비활성화 시킬때 RewriteRule 라인의 주석처리보다 RewriteEngin Off 로 해야 한다.

RewriteLog FILE-PATH
RewriteLog 지시자는 Rewrite 엔진의 로그를 기록할 파일을 지정한다.

RewriteLogLevel Level
RewriteLog 지시자로 설정한 로그파일에 기록할 로그들에 대해 얼마나 자세한 내용을 로그에 남길 것인가에 대해 설정하는 지시자이다.
Level 은 0~9까지 사용할 수 있으며 0은 기록하지 않겠다는 의미이다. 숫자가 높을 수록 자세한 로그를 기록한다.

RewriteCond TestString CondPattern
RewriteRule 과 함께 사용되는 규칙으로 RewriteCond 다음에 오는 RewriteRule은 RewriteCond 에서 설정한 패턴과 일치해야지만 RewriteRule을 실행한다.

RewriteRule Pattern Substitution
Rewrite 모듈의 실질적인 Rewrite 규칙들을 적용하는 지시자이다.
Pattern(input URL)을 Subtitution(Return URL)로 변경하기 위한 모든 규칙들은 이 지시자를 사용해서 설정해야 한다.
Pattern에는 Perl 정규표현식을 사용할 수 있기 때문에 Pattern의 규칙을 폭넓게 적용 가능하다.

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

정규표현식 단축표현들
[:alpha:] : 알파벳과 같은 표현, [a-zA-Z]
[:alnum:] : 알파벳과 숫자, [a-zA-Z0-9]
[:digit:] : 숫자, [0-9]
[:upper:] ㅣ 알파벳 대문자 [A-Z]

으로 간단하게 알아보았다.

by 김영준