사이트 이전과 검색엔진 최적화

사이트 이전과 검색엔진 최적화
301 리디렉트는 검색엔진 최적화에 필수

우여곡절 끝에 사이트를 이전하게 되었습니다.
예전에는 티스토리 블로그에 도메인만 구입해서 티스토리와 연동시켜 사용하고 있었는데요, 결국엔 워드프레스 블로그를 사용한 개인 호스팅으로 옮기게 되었습니다.
이유는 몇가지가 있는데, 그 중 하나는 301 permanent redirect를 시험해 보고싶은 이유도 있었고 이것이 검색 결과에 미치는 영향 또한 알아보고 싶었습니다.
이론상으로는 전혀 문제가 없다고 알고있는데 현실적인 경험이 없었기 때문에 궁금했습니다.
게다가 블로그 컨텐츠들도 이미 몇년이 지난지라 오래된 감이 있고 또 처음부터 새로운 블로그에서 새롭게 시작하고 싶은 마음도 있었기 때문에 이렇게 옮기게 되었습니다.

개인 호스팅으로 옮기면서 저에게 가장 중요했던것은 컨텐츠보다 구글 검색결과 랭킹 유지였습니다.
여전히 운좋게도 제 블로그가 ‘검색엔진 최적화’로 구글 검색결과의 첫번째에 위치하고 있기 때문에 욕심이지만 그 랭킹을 잃고 싶지 않았습니다.
게다가 대부분의 트래픽이 구글 검색결과에 의해 발생되기 때문에 절대 포기할수 없는 부분이었습니다.
컨텐츠야 시간과 돈을 투자해서라도 옮길수 있는것이지만 구글 검색결과 랭킹은 돈을 주고도 얻을수 없기 때문입니다.
자신의 사이트에 검색엔진 최적화가 중요하다면 아마도 저와 같은 고민을 해보신 분들이 분명히 있을거라 생각합니다.
어쩌면 앞으로 사이트를 관리하는 웹마스터들에게 닥쳐올수 있는 일이기도 하구요.

블로그 컨텐츠는 티스토리에서 백업된 xml 파일이 있었으니 큰 문제는 없었는데 가장 큰 문제는 검색엔진에 인덱스된 url이었습니다.
site:seo-korea.com 을 구글에서 검색해보니 약 1,020개의 url이 인덱스 되어있더군요.
어떻게 하면 인덱스 되어있는 url들을 포기하지 않고 그대로 보존하면서 새로운 블로그 플랫폼으로 이전 시키느냐가 가장 큰 관건이었습니다.
컨텐츠를 모두 티스토리에서 워드프레스로 옮긴다 하더라도 티스토리 블로그 url형식과 워드프레스 url형식이 서로 같지 않기 때문에 사용자가 검색엔진에 인덱스되어 있는 url을 클릭해서 들어올 경우 404(Page not found) 페이지로 연결될것이 뻔하고 이것은 결국 구글 검색결과에서 자동 삭제될것이 분명하기 때문에 걱정이 앞섰습니다.

사실 가장 쉬운방법은 티스토리와 같은 플랫폼인 텍스트큐브를 새로운 호스팅에 설치해서 데이터를 복원시키면 아주 간단하게 끝나지만, 이런저런 것들을 시험해보는 차원에서 텍스트큐브를 http://www.seo-korea.com/tc/ 에 설치하고, 워드프레스 블로그를 http://www.seo-korea.com 에 설치하는것으로 결정을 했습니다.
결과적으로 예전에 http://www.seo-korea.com에 있던 모든 포스팅들을 http://www.seo-korea.com/tc/ 로 옮기고 http://www.seo-korea.com 에는 새로운 포스팅을 올리게 되었습니다.

이 과정에서 검색엔진에 인덱스 되어있는 모든 url들을 http://www.seo-korea.com/tc/ 로 301 리디렉트 해놓았기 때문에 혹시라도 사용자들이 검색엔진을 통해 들어오더라도 올바른 포스팅으로 리디렉트 되는것도 확인했습니다.
예를 들어 http://www.seo-korea.com/18 이 구글에 인덱스되어 있는 예전의 블로그 포스팅의 url인데 이 url이 현재 워드프레스 블로그에 존재하지 않으므로 http://www.seo-korea.com/tc/18 로 리디렉트 되는것을 확인할수 있습니다.
redirect의 방법은 301 permanent redirect를 적용했구요, 그랬기 때문에 곧 구글 검색결과도 조만간 자동으로 http://www.seo-korea.com/tc/18 로 바뀔것으로 예상하고 있습니다.
301 permanent redirect에 대해서는 지난 포스팅 “301 vs 302 리디렉트“을 참고하시기 바랍니다.

혹시라도 저와 비슷한 상황인 분들을 위해 블로그 이전과정을 알려드립니다.

Step 1: 데이터 백업
seo-korea.com 티스토리 계정에 로그인 해서 모든 데이터를 백업했습니다.
xml 형식의 파일로 블로그 전체를 다운받아 개인 PC에 저장해 두었습니다.

Step 2: 데이터 복원
그리고는 http://www.seo-korea.com/tc/ 에 텍스트큐브 최신버전을 다운받아 설치하고 관리자로 로그인 한다음 저장해 뒀던 xml파일을 사용해서 모든 데이터를 복원시켰습니다.
티스토리나 텍스트큐브는 같은 플랫폼이기 때문에 모든 url 형식 또한 그대로 복원되었습니다.
예전에는 http://www.seo-korea.com/{url 확장자} 였던 url이 http://www.seo-korea.com/tc/{url 확장자} 로 변경된것입니다.
그리고 http://www.seo-korea.com/ 에는 워드프레스 블로그를 설치했습니다.

Step 3: 301 permanent redirect 설정
이제부터 관건은 구글에 인덱스되어있는 http://www.seo-korea.com/{url 확장자} 형식의 url을 어떻게 http://www.seo-korea.com/tc/{url 확장자} 로 301 permanent redirect를 하느냐 입니다.
우선 워드프레스 theme의 404 에러 페이지를 컨트롤하는 파일을 아래와 같이 수정합니다.
파일은 /wp-content/themes/{theme 이름}/404.php 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$url = str_replace('seo-korea.com/', 'seo-korea.com/tc/', $_SERVER['SCRIPT_URI']);
$header = get_headers($url);
if($header[0] == "HTTP/1.1 200 OK") {
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".$url );
} else {
    // get_header(); 와 get_footer(); 사이의 내용은 theme 마다 조금씩 다를수 있습니다.
    get_header();
    echo '<div style="padding: 60px;">';
    include "includes/no-results.php";
    echo '';
    get_footer();
}
?>

위의 404.php에 도달한 사용자는 워드프레스 내에 존재하지 않는 url을 요청한 사용자들입니다.
요청된 url은 분명 잘못된 url이거나 아니면 예전의 티스토리 블로그 포스팅에 대한 요청일것입니다.
위의 코드는 요청된 불분명한 url이 이전된 티스토리 블로그 포스팅인지 확인해보고 맞으면 http://www.seo-korea.com/tc/{포스팅 url} 로 보내주는것이고, 아니면 그냥 404 에러 메세지를 브라우저에 표시하는 것입니다.
header(“HTTP/1.1 301 Moved Permanently”); 는 혹시라도 방문자가 검색엔진 크롤러일 경우를 대비해 url이 완전히 옮겼다는것을 알려주고, 이것을 알아본 크롤러는 예전 url을 무시하고 새로운 url을 검색결과에 저장하게 됩니다.
301 permanent redirect에 대해서는 지난 포스팅 “301 vs 302 리디렉트“을 참고하시기 바랍니다.

그러고 보니 이전하면서 별로 어려운 부분은 없었네요..
어찌됐든 현재 잃어버린 url없이 텍스트큐브와 워드프레스를 함께 운영하고 있습니다.

블로그 운영차원에서 볼때 당장 두개의 블로그를 가지고 있는게 썩 좋은방법은 아니지만 텍스트큐브에 있는 내용들은 좀 오래된 내용들인거 같아 조금씩 업데이트해서 차차 워드프레스 블로그로 옮기고 텍스트큐브의 내용들을 하나씩 지워나가는 방법을 취하려 합니다.
적어도 검색엔진 최적화에 전혀 영향을 미치지 않은 최선의 방법이었습니다.

관련글 모음

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>