[정보] Apache rewrite 모듈
1. mod_rewrite란?
mod_rewrite는 apache module의 한 종류로 서버 Request를 정해진 Rule에 의해서 다른 URL or File로 보내는 모듈이다. 즉 호출된 URI를 특정 규칙에 의해 변경하여 호출해준다
2. mod_rewrite 모듈 설치하기
1) 아파치 소스 컴파일 시에 --enable-rewrite 옵션을 추가해야 한다.
예시) $ ./configure --prefix=/usr/local/apache --enable-rewrite
2) 기존 사용 중인 아파치에 추가로 mod_rewrite 모듈을 설치해야 한다.
예시) $ /usr/local/apache/bin/apxs -aic modules/mappers/mod_rewrite.c
1)또는 2)를 통해 mod_rewrite 모듈을 설치하면, httpd.conf 파일에 아래와 같은 모듈을 로딩하는 설정을 확인할 수 있다.
<httpd.conf> 파일
LoadModule rewrite_module modules/mod_rewrite.so |
3. 설정 범위
httpd.conf(전역 설정), Virtual Host 영역 (해당 가상호스트에만 영향), Directory (해당 디렉터리만 영향), .htaccess 등에 설정할 수 있다. 즉 RewriteRule 의 사용 범위는 httpd.conf 에 사용하면 전역적으로 반영되며, <VirtualHost>나 <Directory>, <Location> 에 사용할 경우 해당 범위에만 효과를 미친다.
4. 지시자
1) Rewrite 엔진 설정하기
RewriteEngine On|Off
Rewriteing 엔진 사용 여부 설정. 디폴트는 Off로 설정되어 있으며 On 으로 설정하면 Rewritng 엔진이 활성화 된다.
2) Rewrite 디버깅하기
RewriteLog 파일위치
RewriteLogLevel Level
Rewrite 엔진의 로그 파일 위치를 설정한다. Rewrite 규칙들에 대한 디버깅할 때 임시적으로 사용하기를 권장한다. RewriteLog 지시자는 RewriteLogLevel 지시자와 함께 사용하고, 로그레벨은 0~9 까지 가능하고, 0은 로그를 남기지 않고, 9가 가장 상세하게 로그를 남긴다.
3) Rewrite 규칙 설정하기
RewriteCond TestString CondPattern [Flag]
RewriteRule Pattern Substitution [Flag]
RewriteCond 지시자는 RewriteRule 과 함께 사용되는 규칙으로 RewriteCond 다음에 오는 RewriteRule은 RewrieteCond 에서 설정한 패턴과 일치해야지만 RewriteRule들을 실행한다. RewriteCond는 조건을 지정하고, RewriteRule은 실질적인 Rewrite 규칙들을 적용하는 지시자이다.
* Flag 관련 상세 내용 참조