상황별 URL Rewrite 설정 예시

다음은 웹 서버에서 발생할 수 있는 다양한 상황에 대한 URLRewriteConfig 설정 예시입니다.

  • 상황 1: 기본 URL 리다이렉션

    다음은 "www.test.com/"과 같은 URL 패턴을 매칭하여, "www.test.com/rewrite.html"로 변환하는 설정 예시입니다.

    # url rewrite config - ex1
    RewriteCond %{HTTP_HOST} ^www\.test\.com$       # if {Host} == "www.test.com"
    RewriteRule ^/$ /rewrite.html [L]               # then "/" > "/rewrite.html"
  • 상황 2: 파일이 존재하지 않을 경우 에러 페이지로 리다이렉션

    다음은 "www.test.com/temp/xxx.html"과 같은 요청을 할 때 temp 디렉터리에 xxx.html 파일이 없는 경우 "www.test.com/temp/temp_error.html"로 변환하는 설정 예시입니다.

    # url rewrite config - ex2
    RewriteCond %{REQUEST_FILENAME} !-f
    # if {요청 파일 이름} != 파일을 가리키거나 포함
    RewriteRule ^/([^/]+) /$1/$1_error.html [L]
    # then "/temp/xxx.html" > "/temp/temp_error.html"
  • 상황 3: HTTP 요청을 HTTPS로 리다이렉션

    다음은 "http://www.test.com:80"과 같은 요청을 "https://www.test.com:443"으로 변환하는 설정 예시입니다.

    # url rewrite config - ex3
    RewriteCond %{HTTP_HOST} ^www\.test\.com$
    # if {Host} == "www.test.com"
    RewriteCond %{SERVER_PORT} 80
    # AND {Port} == "80"
    RewriteRule .* https://www.test.com:443$0 [R]
    # then > "https://www.test.com:443$0"   ($0: request uri)
  • 상황 4: 도메인 변경 (URI 무시)

    다음은 "www.test.com/xxx.html"과 같은 URL 패턴을 매칭하여 요청 URI는 무시하고 무조건 "www.test_new.com/"으로 변환하는 설정 예시입니다.

    # url rewrite config - ex4
    RewriteCond %{HTTP_HOST} ^www\.test\.com$       # if {Host} == "www.test.com"
    RewriteRule .* http://www.test_new.com [R]       # then > "http://www.test_new.com"
  • 상황 5: 도메인 변경 (URI 유지)

    다음은 "www.test.com/test.html"과 같은 URL 패턴을 매칭하여 "www.test_new.com/test.html"로 변환하는 설정 예시입니다.

    # url rewrite config - ex5
    RewriteCond %{HTTP_HOST} ^www\.test\.com$
    # if {Host} == "www.test.com"
    RewriteRule .* http://www.test_new.com$0 [R]
    # then > "http://www.test_new.com$0"   ($0: request uri)
  • 상황 6: POST 요청에서 Referer 헤더 없는 경우 차단

    다음은 요청 메소드가 POST이고 Referer 헤더가 없을 경우 "403 Forbidden" 에러로 처리하는 설정 예시입니다.

    # url rewrite config - ex6
    RewriteCond %{REQUEST_METHOD} POST              # if {Method} == "POST"
    RewriteCond %{HTTP_REFERER} =""                 # AND {Referer} == ""
    RewriteRule . - [F]                             # then > 403 Forbidden Return
  • 상황 7: 서브도메인별 URL 리다이렉션

    다음은 "aaa.test.com/xxx.html"로 요청할 경우 "www.test.com/aaa/xxx.html"로, "bbb.test.com/xxx.html"로 요청할 경우 "www.test.com/bbb/xxx.html"로 처리하는 설정 예시입니다.

    # url rewrite config - ex8
    RewriteCond %{HTTP_HOST} ^(aaa|bbb)\.test\.com
    # if {Host} == ("aaa.test.com" OR "bbb.test.com")
    RewriteRule .* /%1$0 [L]
    # then "/xxx.html" > "/(aaa|bbb)/xxx.html" (%1: RewriteCond의 첫 번째 괄호, $0: request uri)
  • 상황 8: 쿼리 문자열에 따른 포트 변경

    다음은 "www.test.com/test.do?query=value1"로 요청할 경우 "www.test.com:8080/test.do?query=value1"로, "www.test.com/test.do?query=value2&.."으로 요청할 경우 "www.test.com:8080/test.do?query=value2&.."로 처리하는 설정 예시입니다.

    # url rewrite config - ex9
    RewriteCond %{QUERY_STRING} ^query=value1$ [OR]
    # if {QueryString} == "query=value1"
    RewriteCond %{QUERY_STRING} ^query=value2&
    # OR {QueryString} == "query=value2&.."
    RewriteRule .* http://www.test.com:8080$0 [R]
    # then > "http://www.test.com:8080$0"   ($0: request uri)
  • 상황 9: 특정 서브도메인 요청을 www 도메인으로 리다이렉션

    다음은 "aaa.test.com/test.html"과 같이 www로 시작하지 않는 요청을 "www.test.com/aaa/test.html"로 처리하는 설정 예시입니다.

    # url rewrite config - ex10
    RewriteCond %{HTTP_HOST} !^www\.test\.com$
    # if {Host} != www.test.com
    RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9]+)\.test.com$
    # AND {Host} == "(영문/숫자 조합).test.com"
    RewriteRule  .* /%1/$0 [L]
    # then > "(영문/숫자 조합)/$0"   (%1: RewriteCond의 첫 번째 괄호, $0: request uri)
  • 상황 10: Referer 헤더 없는 CSS/JS 요청 차단

    다음은 요청 헤더에 Referer 헤더가 없이 CSS나 JS 파일을 요청하는 경우 403 Forbidden으로 처리하는 설정 예시입니다.

    # url rewrite config - ex11
    RewriteCond %{HTTP_REFERER} !.        # if {HTTP_REFERER} == ""
    RewriteRule \.(css|js)$ - [F]         # then "*.css|*.js" > 403 Forbidden Return
  • 상황 11: 특정 패턴을 URL 쿼리 파라미터로 변환

    다음은 "/user@somehost.com/"과 같은 URL 패턴을 매칭하여 "/req_test.jsp?blogId=user@somehost.com"으로 변환하는 설정 예시입니다.

    # url rewrite config - ex12 (REQEUST_URI)
    RewriteCond %{REQUEST_URI} /([a-zA-Z0-9_-]+(@([a-zA-Z0-9_-]+).(com|net|co.kr))?)/?$
    RewriteRule . /req_test.jsp?blogId=%1 [PT,L]
  • 상황 12: 특정 호스트와 URI 패턴에 따른 리다이렉션

    다음은 HTTP 요청 헤더의 호스트가 "tmaxsoft.com"으로 끝나고, URL이 "/redirect/"로 시작하는 경우를 매칭하여 "http://www.tmaxsoft.com/redirect.html"로 리다이렉션하는 설정 예시입니다.

    # url rewrite config - ex13 (HTTP_HOST)
    RewriteCond %{HTTP_HOST} tmaxsoft.com$
    RewriteCond %{REQUEST_URI} /redirect/.*$
    RewriteRule . http://www.tmaxsoft.com/redirect.html [R,L]