공부하는 스누피

[Apache] RewriteRule 정리 본문

정리 모음

[Apache] RewriteRule 정리

커피맛스누피 2020. 7. 14. 03:31

PHP에서 쓰이는 RewriteRule은 Apache Server로 들어온 요청 URL을 편집해서 PHP에 전달한다.

.htaccess 파일이나 Apache httpd.conf 파일에 작성하면 된다. (전역 설정)

아파치 config 파일에 VirtualServer를 추가할 경우, 해당 태그의 내부에 넣어도 된다.

=> allowOverride All로 옵션을 변경해야 한다!

 

RewriteRule을 사용하려면 mod_rewrite 모듈이 있어야 한다.

+ Ubuntu에서 mod_rewrite 활성화

$ sudo a2enmod rewrite

$ sudo systemctl restart apache2

 

 

기본 형식은 아래와 같다.

RewriteEngine On

RewriteRule (패턴)$ 대체 [플래그]

 

- 패턴(정규표현식)

Character Meaning Example
. 문자 하나를 대체 c.t => cat, cot, cut, etc
+ 이전에 대체된 것을 반복함. a+ => a, aa, aaa, etc
* 이전에 대체된 것을 반복 또는 빈 문자열 대체 a* => , a, aa
? 해당 문자가 있어도 되고 없어도 됨. colou?r => color, colour
(u가 없어도 매칭됨)
\ 이스케이프 문자. 정규 표현식 문자를 표현할 수 있음. \. => .
(정규식 의미를 갖지 않음)
^ 앵커로 불림. 문자열의 첫 부분과 매칭됨. ^a => apple, anchor, etc
$ 다른 종류의 앵커. 문자열의 끝 부분과 매칭됨. $m => com, mom, etc
( ) 문자를 그룹화 시킴. (ab)+ => ababab
[ ] 문자 클래스. 이중에 하나를 매칭시킴. c[uoa]t => cut, cot, cat
[^ ] 문자 클래스의 반대. 포함되지 않는 문자를 매칭시킴 c[^/]t => cat or c=t 
c/t는 안됨.

 

 

- 대체 Substitution

=> 패턴에서 매치된 부분을 수정함.

=> file의 절대 경로 사용.

=> 대체 문자열은 Full URL로 여겨져 redirect됨.

%{QUERY_STRING} => 쿼리문을 넣는다.

 

- 플래그 Flags

[NC]: 대문자, 소문자 구분하지 않는다.

[R]: HTTP redirect를 수행한다. 다음 Rule이 있다면 Invalid URI 에러가 날 수 있으니 [L]과 함께 사용해야 한다.

[L] : 마지막 RewriteRule. 비슷한 기능인 [END]는 잘 안쓴다.

 

- 사용

HTTP request를 HTTPS로 자동 변환

PHP MVC 구현

 

참고

https://hostadvice.com/how-to/how-to-enable-apache-mod_rewrite-on-an-ubuntu-18-04-vps-or-dedicated-server/

 

How to Enable Apache Mod_Rewrite on an Ubuntu 18.04 VPS or Dedicated Server | HostAdvice

 

hostadvice.com

https://httpd.apache.org/docs/2.4/rewrite/intro.html

 

Apache mod_rewrite Introduction - Apache HTTP Server Version 2.4

Apache mod_rewrite Introduction This document supplements the mod_rewrite reference documentation. It describes the basic concepts necessary for use of mod_rewrite. Other documents go into greater detail, but this doc should help the beginner get their fee

httpd.apache.org

 

Comments