일반적으로 도메인에서 mydomain.com과 www.mydomain.com은 완전히 다른 호스트(www.mydomain.com은 mydomain.com의 2차도메인이라 할 수 있습니다.)이나, 대부분 www를 붙히건 안붙히건 같에 같은 호스트로 지정되도록 설정을 합니다. 그런데 이렇게 설정해 놓을 경우 로그인과 같은 세션공유에서 문제가 생길 수 있습니다. 특히나 ColdFusion과 같은 J2EE기반의 서버에서는 엄연히 다른 두 호스트간의 세션공유가 안되지요.
기술적으로는 SSO라는 것을 이용해서 2차도메인간 세션을 공유할 수 있도록 합니다만. 어쨌든.
그래서 www를 붙히지 않을 경우 강제로 www가 붙어있는 도메인으로 Redirect 시켜주기도 합니다. 그러면 사용자는 접속은 www를 붙히던 안붙히던 가능해지지만 이용하려면 www가 붙어있는 곳에서만 이용이 가능해지기 때문이죠.
또 반대로 www를 붙혔을 경우에 www 없는 도메인으로 Redirect해주지도 합니다. 그런데 이경우 자칫잘못하면 demo.mydomain.com 과 같이 일부러 2차도메인을 설정한 경우에도 무조건 그냥 mydomain.com으로 연결되버리는 설정을 잘못할 수 있습니다. 그래서 가급적 대표 홈페이지는 www.mydomain.com과 같이 한 도메인으로 지정하고 mydomain.com과같이 www가 없으면 무조건 www.mydomain.com으로 연결하는 것이 좋다고 볼 수 있습니다. 그래야 다른 2차도메인과의 충돌이나 설정에 영향을 덜 주니까요.
어쨌든. 하나의 예로 지정해 봅시다.
어떤 웹사이트가 있는데 이 웹사이트는 항상 www.mydomain.com으로 접속되길 원합니다. 즉, mydomain.com과 같이 www를 붙히지 않으면 자동으로 www.mydomain.com으로 연결되도록 말이죠.
그런데 문제는 SSL인증서가 설치된 HTTPS호출인 경우도 같이 써야하는 경우에는 어떻게 해야 할 까요? 즉,
http://mydomain.com 은 항상 http://www.mydomain.com 으로
https://mydomain.com 은 항상 https://www.mydomain.com 으로
위와같이 말이죠.
다음과 같이 Apache의 Redirect Rule을 설정해 줍니다. Ubuntu의 경우 SSL용 Vhost 파일을 따로 만들기 때문에 구분해서 지정하면 되고, Redhat 같은 경우엔 http.conf파일안에 각 Vhost별로 지정해 주면 됩니다.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mydomain.com
RewriteRule ^(.*)$ http://www.mydomain.com$1 [R=permanent,L]
#HTTPS 접속인 경우
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mydomain.com
RewriteRule ^(.*)$ https://www.mydomain.com$1 [R=permanent,L]
출처 : http://blog.nooree.com/post.cfm/apache-redirect-http-https-www