사이트에 강제로 www 넣기/빼기
원문 : https://www.thewordcracker.com/miscellaneous/force-or-remove-www-with-htaccess/
예전에 이런 글을 올린적이 있습니다.
cafe24 SSL 적용 후 https로 리다이렉트 시키기
rewrite rules을 정해준다는 부분에선 똑같습니다.
한개의 시놀로지 NAS에서 사이트를 여러개 돌리다보니, rewrite rule을 건들일이 조금씩 생깁니다.
domain.com / domain2.com / domain3.com 이런식으로 각각의 가상호스팅을 잡아두는데, www가 붙던 안붙던 해당 사이트를 들어가야만 하기 때문에 찾아보니 결국 rewrite rule 가 가장 편하더라구요.
nginx는 왠지 어려워서 손을 안대게 되고(……………..)
web satation의 기본 웹서버의 백앤드를 apache로 설정, .htaccess 파일을 수정하는 방식으로 손을 댔습니다.
기존엔 짧은주소를 선호해 www가 없는 주소로 보내줬으나, 사이트 운영 관점에선 www가 붙는게 더 낫다는걸 보고 변경했어요.
www 붙이기는 아래와 같습니다.
RewriteCond %{HTTP_HOST} ^(?!www.)(.+) [NC] RewriteRule ^(.*) http://www.%1/$1 [R=301,NE,L]
운영중인 사이트는 모두 https 접속을 사용하므로, 두번째줄의 http를 https로 수정합니다.
# https://www 로 보내주기 RewriteCond %{HTTP_HOST} ^(?!www.)(.+) [NC] RewriteRule ^(.*) https://www.%1/$1 [R=301,NE,L]
아래와 같은 규칙도 가능하다고 합니다.
RewriteCond %{HTTP_HOST} ^example.com [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]
example을 실제 도메인으로 바꾸면 됩니다.
제 경우, 여러개의 도메인을 한번에 관리하고 있으므로, 두 번째 방식을 사용합니다.
제거는 아래와 같이 합니다.
RewriteCond %{HTTP_HOST} ^www.(.+) [NC] RewriteRule ^(.*) http://%1/$1 [R=301,NE,L]
역시 https 접속을 사용하는 경우, http를 https로 변경하면 되겠죠.
이렇게 적용하면 위의 https 강제 리디렉션은 적용하지 않아도 됩니다.
기초적인 정규식인데… 정규식 너무 어려워요……