문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
apache:mod_rewrite [2011/06/09 18:34] kwon37xi |
apache:mod_rewrite [2013/08/19 16:02] (현재) kwon37xi [주석 달기] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Apache mod_rewrite ====== | ====== Apache mod_rewrite ====== | ||
* URL을 변경해서 요청하는 모듈 | * URL을 변경해서 요청하는 모듈 | ||
+ | * [[http:// | ||
* [[http:// | * [[http:// | ||
- | | + | * [[http:// |
- | | + | |
+ | ===== 기본 ===== | ||
+ | <code apache> | ||
+ | RewriteEngine on | ||
+ | RewriteRule ^/? | ||
+ | </ | ||
+ | * URI 비교 대상은 {REQUEST_URI} 값이다. 쿼리 파라미터는 제외됨. | ||
+ | * Apache 1.x 에서는 도메인 바로 뒤의 슬래시(/ | ||
+ | * 둘 다 만족시키는 매칭 : **^/?** 로 시작하면 된다. | ||
+ | |||
+ | * RewriteCond 를 통해 Apache 변수(variable)의 값을 조건별로 판단해서 룰을 적용할수 있다. | ||
+ | <code apache> | ||
+ | RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] | ||
+ | RewriteRule .? http:// | ||
+ | </ | ||
+ | * RewriteCond 의 **!**은 not 을 뜻한다. 즉, www.example.com 이 **아닌** 다른 도메인으로 왔을 경우에 조건이 발동된다. | ||
+ | |||
+ | ===== Flags ===== | ||
+ | * [[http:// | ||
+ | * last|L : Rewrite 조건 블럭의 끝(last)를 뜻한다. mod_rewrite 자체를 끝내는 것은 아니다. | ||
+ | * nocase|NC : regex 검사시 대소문자 구분 안함. | ||
+ | * redirect:R : 몰래 rewrite하지 않고, 브라우저가 redirect하도록 한다. 기본 HTTP 302 응답(moved temporarily)을 보낸다. [R=301]로 하면 moved permanently 를 뜻한다(검색엔진이 인덱스를 다시 생성하게 함). | ||
+ | * qsappend|QSA : Query String Appended. 현재 받은 쿼리 문자열을 재설정한 URL에도 동일하게 보낸다. | ||
+ | * forbidden|F : HTTP 403 Forbidden 응답(페이지 제공 안함) | ||
+ | * ornext|OR : 조건 생성시 logical OR 의 역할을 한다. | ||
+ | * next|N : 마지막에 재생성된 URI를 기준으로 해서, 모든 mod_rewrite 조건을 처음부터 다시 체크한다. | ||
+ | * passthrough|PT : 최종 생성된 결과를 파일 경로로 간주하지 않고 또 다른 URI로 간주한다. 이는 Alias, Redirect, ScriptAlias 등을 사용했을 경우에 꼭 필요하다. 이들은 존재하는 파일 경로를 가리키지 않는 URI를 만들어내기 때문이다. | ||
+ | ===== 주석 달기 ===== | ||
+ | <code apache> | ||
+ | RewriteEngine off | ||
+ | Rewrite 관련 코드들... | ||
+ | ... | ||
+ | RewriteEngine on | ||
+ | </ | ||
+ | 위와 같이 하면 off 이하부터 on 이상 까지의 구문이 주석처럼 실행이 안된다. | ||
+ | |||
+ | ===== 요청 금지 ===== | ||
+ | <code apache> | ||
+ | RewriteEngine on | ||
+ | RewriteRule \.exe - [F] | ||
+ | </ | ||
+ | |||
+ | * *.exe의 모든 요청을 금지한다. | ||
+ | * '' |