'apache'에 해당되는 글 1건

  1. 2011.04.15 apache 에서 https 강제 redirect

apache 에서 mod_rewrite 모듈을 이용해
특정 페이지를 redirect 하는 방법입니다.

검색을 해 보면 일반적으로
.htaccess 파일을 생성하여 사용하라고 되어 있는데,

apache 스펙 문서를 보면
.htaccess 는 과도한 디스크 접근이 발생하므로
특수한 경우가 아니라면 사용을 피하라고 하고 있습니다.
아파치 튜토리얼: http://httpd.apache.org/docs/2.2/en/howto/htaccess.html

저는 httpd.conf 에 설정하는 방식을 사용했습니다.

<VirtualHost *:80>
Servername      www.mydomain.com
...
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/user/login(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R, L]
</IfModule>
</VirtualHost>

이렇게 설정하면 /user/login... 으로 시작하는 페이지들의 경우에는
아파치 단에서 https 로 강제 redirect 되게 됩니다.


사용한 변수들)
RewriteEngine: rewrite 모듈의 사용 여부 [On/Off]
RewriteCond: rewrite 실행할 조건
RewriteRule: 조건이 만족할 경우 실제로 rewrite가 일어날 원본 주소와 rewrite 된 주소

%{HTTPS} : SSL 사용 여부 [on/off] - mod_ssl 필요
%{HTTP_HOST} : 호출된 서버의 domain. 포트 번호 있을 경우에는 port 번호 포함.
  ex) http://www.mydomain.com/myurl.html?var=value => www.mydomain.com
%{REQUEST_URI} : 도메인 이후의 리소스 절대 경로 및 파라미터
  ex) http://www.mydomain.com/myurl.html?var=value => /myurl.html?var=value
[R] : 강제로 redirect 시킴 (http status code에 따라 분기할 수 있습니다.)
[L] : 마지막 RewriteRule 표시. (이후의 RewriteRule은 무시됨)


제가 사용한 옵션은 이 정도입니다.

보다 다양한 내용은 아파치 document에서 확인해 보세요 ^^
Apache Module mod_rewrite: http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html

Posted by hyshin
TAG , ,