맨날 Apache 가상호스트 설정하면서 rewrite 조건이 헷갈려가지고 참고용으로 정리했다.

  • RewriteCond 지시자는 RewriteRule 과 함께 사용된다.
  • RewriteCond 다음에 오는 RewriteRule은 RewriteCond 에서 설정한 패턴과 일치해야지만 RewriteRule들을 실행한다.

Rule

  • [L] : 정의된 최종행 이 행 이후의 RewriteRule은 무시
  • [R] : 리다이렉트 실행
  • [F] : 403에러로 redirect
  • [G] : 410에러로 redirect
  • [P] : proxy request로 보냄
  • [N] : 새로운 룰 시작
  • [R] : 무조건 redirect
  • [PT] : Input URL을 그대로 유지하며 Return URL을 실행한다.
  • [NC] : 대소문자를 구별하지 않음
  • [OR] : OR

 

Regular Expression

  • . : 다수의 한문자
  • ? : 0개 이상의 한문자
  • * : 0개 이상의 문자 또는 문자열
  • + : 1개 이상의 문자 또는 문자열
  • ^ : 문자열의 첫문(열)을 지정합니다.
  • $ : 문자열의 끝 문자(열)을 지정합니다.
  • (역슬래쉬) : 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거합니다.(예:(, ), [, ] . 등)
  • {n} : 정확히 n번 반복
  • {n,} : n번 이상 반복
  • {n,m} : n 이상 m 이하 반복
  • x|y : x또는 y를 찾습니다.
  • [chars] : 문자들의 범위 또는 표현할 수 있는 문자들을 설정합니다.
    예) [a-z] : a 부터 z 까지의 소문자, [tT] : 소문자 t 또는 대문자 T
  • 정규표현식 단축표현들
    [:alpha:] : 알파벳. [a-zA-Z] 와 같은 표현
    [:alnum:] : 알파벳과 숫자. [a-zA-Z0-9] 와 같은 표현
    [:digit:] : 숫자 [0-9] 와 같은 표현
    [:upper:] : 대문자. [A-Z] 와 같은 표현

Usable Server Variable ($_SERVER)

  • %{HTTP_USER_AGENT}
  • %{HTTP_REFERER}
  • %{HTTP_COOKIE}
  • %{HTTP_FORWARDED}
  • %{HTTP_HOST}
  • %{HTTP_PROXY_CONNECTION}
  • %{HTTP_ACCEPT}
  • %{DOCUMENT_ROOT}
  • %{SERVER_ADMIN}
  • %{SERVER_NAME}
  • %{SERVER_ADDR}
  • %{SERVER_PORT}
  • %{SERVER_PROTOCOL}
  • %{SERVER_SOFTWARE}
  • %{REMOTE_ADDR}
  • %{REMOTE_HOST}
  • %{REMOTE_USER}
  • %{REMOTE_IDENT}
  • %{REQUEST_METHOD}
  • %{SCRIPT_FILENAME}
  • %{PATH_INFO}
  • %{QUERY_STRING}
  • %{AUTH_TYPE}
  • %{TIME_YEAR}
  • %{TIME_MON}
  • %{TIME_DAY}
  • %{TIME_HOUR}
  • %{TIME_MIN}
  • %{TIME_SEC}
  • %{TIME_WDAY}
  • %{TIME}

 

판정

  • -f : REQUEST_FILENAME 이 나타내는 regular file 이 존재하는가?
  • -d : REQUEST_FILENAME 이 나타내는 directory가 존재하는가?
Ref. https://www.cikorea.net/bbs/view/tip?idx=8296%EF%BB%BF