[Apache] 아파치 .htaccess에서 www 붙이기, 제거하기(rewrite, redirect)

apache rewrite rules 설정

매번 찾아보는 내용이라 메모겸 작성합니다.
리디렉트, 리다이렉트 용도로도 많이 사용하는 아파치의 rewrite 모듈 에제입니다.

<IfModule mod_rewrite.c>
RewriteEngine On

# 강제로 HTTPS 로 넘김
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# 여러 도메인을 한 곳으로
RewriteCond %{HTTP_HOST} ^(example.com|www.example.co.kr|example.co.kr) [NC]
RewriteRule (.*) https://www.example.com/$1 [L,R=301,NC]

# 브라우저에 강제로 www 붙이기
RewriteCond %{HTTP_HOST} ^example.net [NC]
RewriteRule ^(.*)$ https://www.example.net/$1 [L,R=301,NC]

# 2차도메인을 전부 제거
RewriteCond %{HTTP_HOST} ^([A-Za-z0-9_]+).example.com [NC]
RewriteRule ^(.*)& http://example.com/$1 [L,R]

# www만 제거
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)& http://example.com/$1 [L,R]
</IfModule>

필요한 부분만 사용하시면 되겠습니다.

웹서버로 들어온 모든 요청에 대해서 www를 붙이게도 가능하나, 이렇게 하게 되면 여러 서비스를 구동하며 서브도메인을 쓰게 되는 경우에 문제가 생기게 됩니다.

abc.example.com 을 사용중인데 www.abc.example.com  이 생기게 되겠죠.

반대로 2차도메인을 모두 제거하는 경우 역시 별로 사용할 일은 없을 것 같네요.

단순한 호스팅의 경우 cname을 해당 호스팅 서버를 바라보게 해도 상관 없겠지만, 세션이나 캐시를 사용하게 되는 경우 별도의 도메인으로 인식하기 때문에, 모든 요청을 처음부터 한곳으로 넘겨주는게 좋다고 합니다.

{{#is "post"}} {{/is}}