사용자 도구

사이트 도구


apache:mod_rewrite

문서의 이전 판입니다!


Apache mod_rewrite

기본

RewriteEngine on
RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)$ display.php?country=$1&state=$2&city=$3 [L]
  • URI 비교 대상은 {REQUEST_URI} 값이다. 쿼리 파라미터는 제외됨.
  • Apache 1.x 에서는 도메인 바로 뒤의 슬래시(/)를 정규표현식에 포함해야 했으나, 2.x 부터는 / 제외하고 매칭.
    • 둘 다 만족시키는 매칭 : ^/? 로 시작하면 된다.
  • RewriteCond 를 통해 Apache 변수(variable)의 값을 조건별로 판단해서 룰을 적용할수 있다.
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] <br>  
RewriteRule .? http://www.example.com%{REQUEST_URI} [R=301,L]  
  • RewriteCond 의 !은 not 을 뜻한다. 즉, www.example.com아닌 다른 도메인으로 왔을 경우에 조건이 발동된다.

Flags

  • 플래그는 조건이나 규칙(Rule)의 끝에 [] 로 감싸서 넣는다. 여러 플래그가 들어갈 경우에는 쉼표(,)로 구분한다.
  • 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 조건을 처음부터 다시 체크한다.

주석 달기

RewriteEngine off
Rewrite 관련 코드들...
...
RewriteEngine on

위와 같이 하면 off 이하부터 on 이상 까지의 구문이 주석처럼 실행이 안된다.

apache/mod_rewrite.1307623615.txt.gz · 마지막으로 수정됨: 2011/06/09 21:46 저자 kwon37xi