Home 내가OO봐서아는데 .htaccess으로 url에 있는 www 제거하면서 http를 https로 redirection하기!!!

.htaccess으로 url에 있는 www 제거하면서 http를 https로 redirection하기!!!

2
.htaccess으로 url에 있는 www 제거하면서 http를 https로 redirection하기!!!

아래 글은 이전 1월 17일에 올렸던 글인데 워드프레스 플러그인 등이 꼬여서 홈페이지를 초기화 하며 날아간 글이다. ==========================================


내가해봐서아는데(Info)2019년 1월 17일


며칠째 홈페이지 설정으로 바쁘다.


이번 포스팅은 ssl 인증서도 달았으니 http로 접근하면 https로 변경하기!!! 이다.
하는 김에 www도 제거해주자.


참고로 http와 https 각각 둬도 되고 www도 있어도 되고 없어도 홈페이지 접근하는데는 전혀 문제가 없다.


하지만 최근 브라우저들의 추세는 ssl이 안 달려 있는 사이트는 안전하지 않다는 메세지를 보여주는 등 제약을 하는 방향으로 나아가고 있다.

ssl_안전하지않음


그리고 www도 어느쪽이든 한쪽으로 몰아서 접근하도록 유도해주는 것이 좋은게 검색엔진에서는 저것들을 각각으로 본다는 것이다.
결국 들어와보면 똑같은 게시물인데 2개 이상씩 리스트업 되는 이유가 이런 것 때문이다.


여튼 이런 이유로 리다이렉션(redirection)하기로 마음 먹었다.


php파일에서도 비슷하게 설정이 가능하지만 굳이 .htaccess 파일에서 설정하는 이유는 아파치 서버단에서 바로 처리하기 때문에 php 파일보다 조금이나마 처리속도가 빠르고 또 php에 적용 시키려면 모든 파일에 다 적용해야 하기 때문이다.


먼저 .htaccess 파일을 만들자.


메모장으로 해도 좋고 사용중인 에디터로 해도 좋다.
먼저 .htaccess 이라는 파일을 만들자.
아래 내용을 붙여넣기 하자.

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

 

위 소스는 아래와 같은 동작을 한다.


http://example.com
http://www.example.com
https://www.example.com
위 3가지 접근을 모두 아래 주소로 변경한다.
https://example.com


부족하지만 각 행별로 간단히 설명하자면

RewriteEngine on ##기능을 on 했다. 
RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www. [NC] ##https로 접근한게 아니거나 www가 붙어 있으면 
RewriteCond %{HTTP_HOST} ^(?:www.)?(.+)$ [NC] ##주소에 www가 있으면 제거 
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301] ##위에서 변경한 주소를 https 로 다시 접속

 

검색을 하다 보면 주소입력 부분에 도메인을 하드코딩해놓은 소스들이 있는데 별로 좋지 않은 방법이다.


위에 설명에서는 간단히 넘어 갔는데
HTTP_HOST 부분은 http:// 이후 .com이나 .net 같은 부분까지의 주소가 변수로 들어 있고 REQUEST_URI 부분은 HTTP_HOST를 제외 한 나머지 뒷부분의 주소가 변수로 담겨져 있다.


즉, 위 소스대로 해야 어느 링크로 들어오든 https와 www 제거를 제대로 할 수 있는 것이다.

.htacces 파일을 루트에 올리자.


사용 중인 호스팅에 따라 루트폴더가 www가 될 수도 있고 public_html이 될 수도 있다.


여튼 최상위 폴더에 지금 만든 파일을 올리자.


그리고 변경을 하고 테스트를 진행할때 조금 기다리거나 캐시를 지우거나 모바일에서 테스트를 하거나 하자.
본인도 계속 같은 PC, 같은 브라우저로 테스트를 하다보니 캐시 때문인지 됐다 안 됐다가 너무 들죽날죽 했었는데 모바일로 확인하고 최종 확인은 다른 곳에 있는 지인에게 링크로 확인을 했다.
(pc 포멧을 한번 해야할 듯 ㅠㅠ)


번외로 https로 변경하면서 www를 붙이는 소스
본인은 www를 없애는 것이 맘에 들어서 없앴지만 처음 설명했다시피 붙이거나 빼거나 홈페이지 접근에는 아무 문제 없다.
그냥 본인 취향에 따라 선택하면 되는 문제.
그래서 무엇을 좋아할지 몰라 두가지 다 준비해봤다.

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]

2 COMMENTS

    • 모바일에서만 에러가 나는건가요?
      그리고 어떤 에러가 나오는건가요?
      사용하신 소스에는 오타나 문법을 잘못 사용한건 아닌가요?

      질문 하신걸로는 정보가 너무 적어서 답변 드리기가 힘드네요 ㅠ

LEAVE A REPLY

Please enter your comment!
Please enter your name here