posted by 은이종 2014. 11. 5. 19:03



 

 mod_rewrite 모듈을 이용한 특정 페이지 redirect

1. 
 RewriteEngine On
 RewriteCond %{HTTPS} off
 RewriteRule ^/user/login(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R, L]
 
사용한 변수들)

 RewriteEngine: rewrite 모듈의 사용 여부 [On/Off]
 RewriteCond: rewrite 실행할 조건
 RewriteRule: 조건이 만족할 경우 실제로 rewrite가 일어날 원본 주소와 rewrite 된 주소
 
%{HTTPS} : SSL 사용 여부 [on/off] - mod_ssl 필요
 %{HTTP_HOST} : 호출된 서버의 domain. 포트 번호 있을 경우에는 port 번호 포함.
   ex) http://www.gmate.co.kr/myurl.html?var=value => www.gmate.com.kr
 %{REQUEST_URI} : 도메인 이후의 리소스 절대 경로 및 파라미터
   ex) http://www.gmate.co.kr/myurl.html?var=value => /myurl.html?var=value
 [R] : 강제로 redirect 시킴 (http status code에 따라 분기할 수 있습니다.)
 [L] : 마지막 RewriteRule 표시. (이후의 RewriteRule은 무시됨)

2. 
다중 Apache Port를 Redirect 시, 302 에러 발생할때 체크사항

1대의 서버에, 
80, 81 port 처럼 다중으로 사용시, 각각 443,444로 Redirect시 

SERVER IP = 123.123.123.123 일때, 81port를 444Port로 Redirect할때

 RewriteCond (.*) https://%{HTTP_HOST}:444%{REQUEST_URI}
으로 설정할 경우
123.123.123.123:81  처럼 :81가 붙어서 표시가 되면 제대로 Redirect가 안될경우가 있다.

기존에 사용하던 HTTP_HOST말고 SERVER_NAME으로 바꿔 사용하면


 RewriteCond (.*) https://%{SERVER_NAME}:444%{REQUEST_URI}


으로 정상적으로 진행된다.

참고 )




=============================================

설정시 정확한 log 파악을 위해서

Rewritelog "/경로"
Rewriteloglevel 3
처럼 log설정해서 정확한 오류가 무엇인지 확인하면서 진행하길 추천한다.