테크정보
목록
웹사이트 http를 https로 www. 자동 이동시키기 : .htaccess
www이동https도메인통일대표도메인
Back-End 2024.04.08 30 회 읽음
Back-End 24.04.08 30

웹사이트를 제작하는 일을 하고 있어서 검색에 도메인이 정확하게 등록되고 연결되기 위해서 필요한 작업이 있습니다. 예시를 위해 해당 사이트 도메인으로 설명을 드리려고 합니다.


해당 사이트의 도메인은 https://www.chr.kr 이라는 도메인을 사용하고 있습니다. 그래서 네이버나 구글에도 해당 도메인으로 등록 신청을 해 놓았습니다. 그렇지만 사용자가 직접 입력하는 경우 번거롭기에 chr.kr 이라는 도메인만 입력하는 경우가 있습니다. 이런 경우 별다른 기능이 없는 일반적 사이트는 큰 문제는 없지만 아래와 같이 문제가 생기기도 합니다.


도메인 자동 이동을 하지 않을 때 생기는 문제

1. 검색 등록에 http와 www의 2개의 웹 문서가 생성될 수 있다.

2. 소셜 공유를 위한 api 키를 http와 www의 2개를 발급 받아 사용해야 한다.

3. http와 www는 별도의 사이트로 인식하여 로그인이 안될 수 있다.

4. 검색 등록에서 www. 또는 http 서로 전환되기도 한다.


위와 같은 문제가 발생할 수 있기에 도메인을 포워딩 시켜주고 통일하는 게 좋다.



.httaccess 파일을 이용한 방법

아파치 웹 서버에서 해당 폴더에 .htaccess 파일이 있다면 여러가지 규칙을 지정하여 사용할 수 있다. ftp로 접속했을 때 보이지 않는 경우도 있으나 실제 파일은 존재하기도 하다. 서버 지식이 있다면 ssh 접속해서 vi 또는 vim 편집기로 생성해도 된다. 가장 간편한 방법은 컴퓨터에서 파일을 생성하고 업로드 하는 게 쉽다.

RewriteEngine On

# HTTP 접속시 HTTPS 로 이동
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# 정의된 여러 도메인을 하나의 도메인으로 이동
RewriteCond %{HTTP_HOST} ^(cgrap.com|www.opm.kr|chr.kr) [NC]
RewriteRule (.*) https://www.chr.kr/$1 [L,R=301,NC]

# www 없이 접속시 www. 자동 붙이기
RewriteCond %{HTTP_HOST} ^chr.kr [NC]
RewriteRule ^(.*)$ https://www.chr.kr/$1 [L,R=301,NC]

# 앞에 시작하는 2차도메인을 모두 제거
RewriteCond %{HTTP_HOST} ^([A-Za-z0-9_]+).chr.kr [NC]
RewriteRule ^(.*)& http://chr.kr/$1 [L,R]

# www 를 사용하지 않고 http 사용시 www 제거
RewriteCond %{HTTP_HOST} ^www.chr.kr [NC]
RewriteRule ^(.*)& http://chr.kr/$1 [L,R]



설정방법 상세 설명

기능을 시작하기 위해서는 RewriteEngine On 구문을 처음에 사용 해 준다. 

RewriteCond %{HTTPS} off " https를 사용하지 않는 경우 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 도메인과 파리미터를 이용한 도메인과 URL로 치환한다.

RewriteCond %{HTTP_HOST} ^(cgrap.com|www.opm.kr|chr.kr) [NC] 나열된 3개의 도메인으로 접속하면 RewriteRule (.*) https://www.chr.kr/$1 [L,R=301,NC]"  구문을 통해 https://www.chr.kr 도메인으로 변경한다.

자주 사용하는 구문으로 " RewriteCond %{HTTP_HOST} ^chr.kr [NC] www. 없이 홈페이지에 접속하면 강제로 RewriteRule ^(.*)$ https://www.chr.kr/$1 [L,R=301,NC]" www. 붙인 도메인으로 교체한다.

2차 도메인을 사용하지 않는 경우 " RewriteCond %{HTTP_HOST} ^([A-Za-z0-9_]+).chr.kr [NC] 구문을 이용하면 앞에 입력한 2차 도메인 내용이 삭제되고 " RewriteRule ^(.*)& http://chr.kr/$1 [L,R] 지정한 도메인으로 교체가 된다.


www. 로 시작하지 않는 경우 삭제하는 것도 가능하며 " RewriteCond %{HTTP_HOST} ^www.chr.kr [NC] 입력한 도메인과 RewriteRule ^(.*)& http://dut.kr/$1 [L,R]" 설정한 도메인으로 변경하여 연결이 된다.


가상 웹페이지 연결
없는 문서를 404 페이지 없음이나 주소를 간략하게 변경하는 것도 가능하다.


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) go2url.php [L]
파일이 없는 경우 go2url.php로 연결이 되어 해당 파일에서 다른 파일을 참조하거나 문구를 표시할 수 있다. 
해당 방법을 위해서는 프로그램을 어느 정도 구현해야 가능하다.




아파치 웹 서버에서 .httaccess 파일을 이용하여 도메인 주소에 대한 변경과 이동 교체에 대한 방법을 소개 해 드렸습니다. 해당 설정을 아파치 설정 파일의 httpd.conf에서도 사용이 가능합니다.
해당 방법이 아니더라도 웹 프로그램 언어를 이용해서 처리하는 방법도 가능합니다. 공통된 파일을 이용해서 도메인과 파라미터에 조건을 만들어서 이동하는 스크립트를 작성하게 됩니다.

httaccess 방법이 가장 간단하면서도 쉽게 구현이 가능하여 권장합니다.
목록