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설정해서 정확한 오류가 무엇인지 확인하면서 진행하길 추천한다.
'Web/WAS > Apache' 카테고리의 다른 글
Apache socket_timeout , reply_timeout 설정 (0) | 2015.12.30 |
---|---|
Apache pagespeed 설치 (0) | 2015.03.18 |
Apache method 설정 (0) | 2014.11.25 |
리눅스 Apache, Nginx SSL 인증서 패스워드 자동입력 (싱글, 멀티) (0) | 2014.07.08 |
apache 재시작 스크립트 (0) | 2013.05.24 |