상황별 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]