본문 바로가기

취미, 관심/NAS, Server

사이트에 강제로 www 넣기/빼기

원문 : https://www.thewordcracker.com/miscellaneous/force-or-remove-www-with-htaccess/

 

사이트 주소에 강제로 www 추가하기/제거하기 - 워드프레스 정보꾸러미

예를 들어, http://example.com을 브라우저 표시줄에 추가하더라도 http://www.example.com과 같이 표시되게 하고 싶은 경우가 있습니다. 이런 경우 다음과 같은 규칙을 .htaccess 파일에 추가할 수 있습니다.

www.thewordcracker.com

 

예전에 이런 글을 올린적이 있습니다.

2020.03.11 - cafe24 SSL 적용 후 https로 리다이렉트 시키기

 

cafe24 SSL 적용 후 https로 리다이렉트 시키기

어쩌다 보니 회사 사이트를 관리하게 되었다. 내 분야도 아닌데.. 회사 사이트에는 그 흔한 SSL적용도 되어있지 않은 터라, SSL적용부터 했어야 했다. 일단 비용이 들지 않는 let's encrypt를 사용해서

siane.tistory.com

한개의 시놀로지 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 강제 리디렉션은 적용하지 않아도 됩니다.

 

기초적인 정규식인데... 정규식 너무 어려워요......