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으로 응답한다.
 Forbidden은 Last의 의미를 포함한다.
 외부에서 접근하면 안되는 리소스를 차단할 경우 유용하다.

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
Posted by SungHoon, Park
,