본문 바로가기

main/Server

[정규표현식] Rewrite 지시자로 정규표현식 이해하기

Rewrite Pattern에 정규식을 사용할 수 있다. 다음은 많이 사용되는 정규식 문법이다.

. : 다수의 한 문자

? : 0개 이상의 한 문자

* : 0개 이상의 문자 또는 문자열

+ : 1개 이상의 문자 또는 문자열

(chars) : 문자 또는 문자열을 그룹화

^ : 문자열의 첫문자(열)을 지정

$ : 문자열의 끝문자(열)을 지정

\ : 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거

{n} : n번 반복

{n,} : n번 이상 반복

{n,m} : n번 이상 m번 이하 반복

[chars] : 문자들의 범위 또는 표현할 수 있는 문자들을 설정

 

Rewrite Subrutine 지시자

L : 뒷 구문 여부를 무시, 해당 줄에서 종료

N : 새로운 Rule 시작

R : Redirection. 뒷 주소로 넘긴다

NC : 대소문자 구별 X

OR : (조건에서) 또는

QSA : Cond의 내용을 지난 결과에 덧붙인다

NE : Out 될 값에 특수문자가 Hex로 포함되어 있는 경우

 


HTTP를 사용하지 않은 경우 동일 URL의 HTTP로 리디렉션

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URL} [R=301,L]

-> 모든 문자열을 받아들여 그룹화하고 rewrite

 

www가 포함된 케이스

RewriteCond %{HTTP_HOST} ^www\. [NC]

-> 문자열의 처음부분에 www를 가지고 있다면 (\으로 .의 특수기능 제거, NC로 대소문자 구별x)

 

www가 포함되지 않은 케이스

RewriteCond %{HTTP_HOST} !^www\. [NC]

-> 문자열의 처음부분에 www를 가지고 있지 않다면 (위와동일)