아파치로 웹서버를 구성한 다음 홈페이지나 블로그등을 운영하다 보면 사이트 개편을 하는 경우가 생기는데 이때 페이지의 구조(카테고리)나 주소를 변경하게 되면 방문자의 대부분이 검색 엔진을 통해 접속하는 웹 특성상 이전에 크롤링 된 주소로 접속을 하기 때문에 방문자는 404 에러 페이지를 보게 됩니다.
주소를 변경하게 되는 경우 방문자 입장에서도 원하는 정보를 얻을 수 없기 때문에 불편하고 사이트 운영자 입장에서도 손님을 놓치는 격이 되기 때문에 변경된 주소를 이어주는 리디렉션(Redirection) 설정이 필요합니다.
리디렉션은 프론트엔드측에서도 자바스크립트를 이용해 구현이 가능하지만 검색 엔진에게 변경된 주소를 알려줄 수 있는 상태 정보, 즉 HTTP status code 301을 반환해 검색엔진에 변경된 정보를 알리는 것이 중요합니다.
목차
301 & 302 Redirect
리디렉션을 설정하기 앞서 개념에 대해 살짝 짚고 넘어가자면, 리디렉션을 나타내는 HTTP 상태 코드는 301 permanent redirect, 302 temporary redirect 로 두가지가 존재합니다.
상태코드 이름에서 알수 있듯이 완전하게 해당 페이지가 이동한 경우 301 코드를 사용하고 임시적으로 페이지 주소를 이동한 경우에는 302 코드를 사용합니다.
사이트 개편 및 구조 개편등으로 인해 주소가 바뀐 경우에는 301, 서버 점검 페이지 같이 일시적으로 해당 페이지를 다른 페이지로 전환해야 하는 경우에는 302 코드를 반환하는 것이 좋습니다.
아파치 리디렉션 설정
<VirtualHost *:80> ServerName abc.com ServerAlias www.abc.com Redirect / http://xyz.com/ </VirtualHost>
첫번째 방법으로는 가상호스트에서 Redirect를 이용하는 방법입니다.
아파치 가상호스트 설정 파일을 편집기로 열어 가상호스트(VirtualHost) 블럭에 위와 같은 문법으로 리디렉션을 설정할 수 있습니다.
예제는 abc.com이나 www.abc.com 으로 접속한 사용자는 xyz.com 도메인으로 이동되게 됩니다. 만일 SSL이 적용된 사이트로 개편한다면 http 프로토콜에서 https 프로토콜로 리디렉트 하면 되겠죠?
<VirtualHost *:80> RewriteEngine On RewriteRule (.*) http://www.abc.net/$1 [R=301,L] </VirtualHost>
두번째 방법으로 가상호스트에서 rewrite 모듈을 이용해 리디렉션 하는 방법입니다.
워드프레스, XE, 그누보드등의 CMS에서 rewrite 모듈을 이용해 주소를 깔끔하게 정리하는데(짧은 주소) 이와 같은 원리로 rewrite 모듈을 사용해 리디렉션을 설정하는 경우 정규표현식을 이용해 좀더 세밀한 리디렉션 구현이 가능합니다.
.htaccess로 Redirection 설정
RewriteEngine On RewriteCond %{HTTP_HOST} ^(abc.com) RewriteRule (.*) http://www.abc.com/$1 [L]
만일 관리자가 아닐 경우 직접 가상 호스트 설정을 수정할 수 없기 때문에 루트 디렉토리에 .htaccess 파일을 만들고 위와 같은 요령으로 설정해 리디렉션 설정을 할 수 있습니다. 위 예시는 2차 도메인 주소 www 가 붙지 않은 abc.com으로 접속했을때 www.abc.com으로 리디렉션 하는 문법입니다.