mod_rewrite 모듈은 규칙 기반으로 URL을 동적으로 Redirect 및 Rewrite 처리를 해준다.
특정 URL 패턴에 대한 리다이렉트 처리를 할 때 자주 사용하며, RESTful한 웹서비스도 제공할 수 있다.
기본형식
RewriteEngine On
RewriteCond TestString CondPattern [Flag]
RewriteRule Pattern Substitution [Flag]
먼저 RewriteRule의 Pattern을 체크.
Pattern을 통과하면 RewriteRule 상단의 RewriteCond를 체크.
순차적으로 RewriteCond의 TestString의 CondPattern을 체크.
CondPattern을 통과하면 RewriteRule의 Substitution을 최종적으로 처리한다.
[그림1] Ruleset 흐름도
RewriteEngine On|Off
모듈 사용여부를 설정한다.
RewriteLog
mod_rewrite 모듈에서 처리하는 내용에 대해 로그를 남긴다.
(형식)
RewriteLog logs/rewrite.log
RewriteCond
RewriteRule에 대한 조건문
RewriteRule과 달리 단독으로 사용할 수 없으며, 최상단부터 순차적으로 실행된다.
[그림2] RewriteCond 흐름도
(형식)
RewriteCond TestString CondPattern
1) TestString
- 테스트 대상 텍스트
- 웹서버 변수를 사용할 수 있다. %{변수명} 형식이다.
[그림3] 서버변수
2) CondPattern
- TestString과 일치할 패턴을 지정하며, 정규표현식을 사용할 수 있다.
- 정규표현식 사용 가능
- RewriteCond 앞에 RewriteRule에서 사용한 정규표현식에서 그룹으로 지정된 값을 사용할 수 있다. $0~$9 형식.
3) Flag
플래그 | 의미 |
설명 |
NC | NoCase |
대소문자 무시한다. |
OR | ORNext |
여러개의 RewriteCond를 사용할 경우 OR 조건으로 사용된다. (RewriteCond가 연속으로 있을 경우는 AND 조건이다.) |
RewriteRule
조건에 따른 rewrite 규칙을 설정하고 해당 규칙에 따른 동작을 지정한다.
(양식)
RewriteRule Pattern Substitution [Flag, Flag...]
1) Pattern
- 일치시킬 패턴을 지정하며, 정규표현식을 사용할 수 있다. 또한 정규표현식에서 그룹으로 지정한 값을 Substitution에서 사용할 수 있다. $0 ~ $9까지 사용 가능함.
2) Substitution
- Pattern이 일치할 경우 Rewrite 처리할 URL을 지정한다.
3) Flag
- 처리할 동작을 지정한다.
- 전체 플래그명, 축약어 모두 사용가능하다.
플래그 | 의미 |
설명 |
E | Env |
조건이 일치할 경우 특정 환경변수를 설정하거나 해제한다. |
F | Forbidden | 403 Forbidden으로 응답한다. |
G | Gone | 410 Gone으로 응답한다. |
L | Last |
더는 RewriteRule 처리를 하지 않는다는 의미다. 개발언어에서 break문과 비슷하다고 할 수 있다. |
N | Next | Rewriting 프로세스를 재시작한다. |
R | Redirect | 302 Redirect로 응답한다. R=301은 HTTP 301 Moved Permanently 응답으로 Redirect 한다. |
NC | NoCase |
대소문자를 무시한다. |
PT | Passthru |
타겟URL이 http(s)로 시작하지 않아도 URL 처리를 할 수 있도록 한다. ※ 기본적으로 타겟URL에 http(s)를 적지 않으면 디렉토리 경로로 인식하게 된다. /로 시작한다면 절대경로, /로 시작하지 않으면 상대경로로 처리한다. |
QSA | qsappend |
qsappend (Query String Apped) QUERY_STRING 변수값을 타겟URL에 유지시켜준다. |
※ 참고자료
- 리눅스를 활용한 회사 인프라 구축의 모든 것
- https://httpd.apache.org/docs/2.0/ko/misc/rewriteguide.html
- http://soul0.tistory.com/139
- http://soul0.tistory.com/270
- http://martinmelin.se/rewrite-rule-tester/
'서버 > 아파치' 카테고리의 다른 글
[아파치] mod_headers 모듈 (0) | 2016.03.06 |
---|---|
[아파치] Windows용 다운로드 경로 (0) | 2016.03.06 |
[아파치] mod_setenvif 모듈 (0) | 2016.02.22 |
[아파치]VirtualHost 설정 (0) | 2016.02.21 |
[아파치]httpd.conf 서버설정 (0) | 2016.02.20 |