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