'Apache'에 해당되는 글 1건

  1. 2011.12.08 http를 강제로 https로 재연결
  2. .
서버/Web2011. 12. 8. 00:59
모든 페이지를 https로 연결시키는 일은 쉽다.
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
그리고 이것은 rewriterule 말고 redirection으로도 처리가 되고, 오히려 그렇게 처리하는 것이 좋은 방법이다. 다음 링크를 참고.
http://httpd.apache.org/docs/2.2/rewrite/avoid.html

그러나 login page 등 일부 페이지만 강제로 https로 연결 시키려면 어떻게 해야할까? 이런 문제는 간단한 것 같지 않다.

예를 들어 로그인 페이지가 "main.php?do=login&...&..."처럼 생겼다면, 단순히 RewriteRule만으로는 처리할 수 없다. 왜냐하면 RewriteRule은 기본적으로 ? 뒤에 붙은 것을 안 보기 때문이다. 이 경우 RewriteCond %{QUERY_STRING}를 사용하면 된다. 또한, RewriteRule에는 QSA를 붙여 주어서 쿼리 스트링이 rewrite 후에도 남아 있도록 만들어 주어야 한다.
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteCond %{QUERY_STRING} do=login
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L,QSA]
그런데 이렇게 하면 로그인 후에도 https에 그냥 머무르게 된다. 필자는 로그인 후에도 https를 계속 쓰는 편이 낫다고 생각하여 그냥 두었지만, 로그인 후에는 다시 http로 보내려면 다른 부분을 또 고쳐야 할 것이다.
Posted by asdfzxcv