[해결] 워드프레스 블로그 도메인 변경하기

이 글은 개인용 웹호스팅 서버에서 운영 중인 워드프레스 블로그에 연결된 A 도메인을 B 도메인으로 바꾸는 방법을 다룬다. 단순히 도메인을 변경하는 것이 아니라, 기존 A 도메인으로 운영되는 동안 작성해 외부 SNS와 커뮤니티에 공유된 링크를 통해서도 B 도메인으로 바뀐 블로그의 해당 포스팅을 연결되도록 한다.

이 글에서 다루는 방법의 상당 부분은 앞서 작성한 [해결] 워드프레스 웹호스팅 수작업 이전하기 포스팅과 중복되기 때문에, 특별히 밝혀야 할 부분 외에는 가독성과 편의를 위해 생략한다.

피처 이미지
푸른 수면 위 3분의2 정도 노출된 입체감이 있는 워드프레스 로고가 물 바탕의 사진 오른쪽에 치우쳐 있는 모습.

사전 점검

기존 사용 중인 웹호스팅 계정(a)과 여기에 연결된 도메인(A)에 관련된 주요 설정과 시스템 정보에 접근할 수 있는지 확인한다. 우선 a 계정의 아이디와 패스워드, a 계정의 워드프레스 블로그가 사용하고 있는 DB 이름과 DB 관리자의 아이디와 패스워드, a 계정의 웹서버 파일을 내려받고 편집할 수 있는 FTP 접속 주소를 알아 두는 것이 좋다. 또한 여기에 연결된 A 도메인에 대한 DNS 레코드를 수정할 수 있는지 확인한다.

추상과 실제의 차이

개념적인 수준에서는 A 도메인을 B로 변경할 뿐, 기존 a 계정의 블로그를 그대로 운영해야 한다. 블로그 방문자에게는 과거 A 도메인을 통해 발행된 인터넷 URL 링크를 접속하더라도 B 도메인으로 운영되는 a 계정 블로그에 동일하게 접속되게 하면 될 것 같다. 이렇게 생각하고 a 계정 블로그의 도메인을 A에서 B로 바꾼 뒤 웹서버의 도메인을 자동 리디렉션하는 설정 방법을 알아보기 시작했으나, 실제는 전혀 다른 접근을 해야 했다.

실제로 해야 하는 것은 이렇다. 첫째, a 계정의 블로그를 그대로 백업해 새로운 웹호스팅 서버인 b 계정에 복구한다. 둘째, b 계정에 B 도메인을 연결한다. 셋째, a 계정의 블로그에 A 도메인으로 접속하는 모든 방문자들을 B 도메인에 연결된 b 계정으로 자동 리디렉션하는 설정을 적용한다. 넷째, 앞으로 모든 신규 콘텐츠를 b 계정의 블로그에 작성하고 배포한다. 다섯째, a 계정과 A 도메인을 가능한한 최대한 오래 유지한다.

전반부 ― 백업·복구·설정

  1. 앞서 소개한 워드프레스 서버 이전 방식을 그대로 이번에도 적용했다. 웹호스팅 서비스에 b 계정을 새로 만들고, 기존 a 계정의 웹서버 파일과 DB 데이터(덤프파일)를 백업 후 b 계정에 FTP로 접속해 업로드했다. /public_html/ 경로 하위의 모든 자료와 각 권한 설정을 그대로 옮긴 것이다. 이후 wp-config.php 파일을 b 계정 환경에 맞는 DB 이름, DB 관리자의 아이디와 패스워드를 입력하는 것을 포함해 몇 가지 번거로운 작업을 거쳐, b 계정에 기존과 동일한 블로그를 복구했다. 단, 복구와 설정이 마무리되기 전까지 검색엔진이 b 계정을 알아보지 않도록  a 계정의 검색로봇(robots.txt) 설정을 복구 대상에서 제외했다.
  2. 이번엔 단순한 계정 옮기기가 아니기 때문에, 백업 복구 이후 조치 가운데 도메인과 관련된 처리를 좀 다르게 해야 했다. 기존 a 계정 웹서버에는 여전히 A 도메인이 연결된 채로 두고, b 계정 웹서버에 B 도메인을 새로 연결한다. 또 웹호스팅 관리 콘솔에서 B 도메인에 대한 DNS 레코드에 계정 b의 웹서버 IP 주소를 입력한다. 그리고 B 도메인에 대한 SSL인증서 설정을 신청해 https 접속을 지원하도록 만든다.
  3. 복구한 b 계정의 워드프레스 블로그 주소 설정값은 아직 A 도메인으로 지정돼 있는 상태다. 웹사이트 주소와 워드프레스 경로 주소를 B 도메인 기준으로 변경해야 한다. 이 설정은 호스팅업체가 지원하는 phpMyAdmin 관리도구로 b 계정의 DB에 접근해 wp_options라는 테이블을 찾고, siteurl과 home이라는 레코드를 찾아 A 도메인으로 된 값을 B 도메인으로 바꾸는 식으로 해결했다.
  4. 계정 a의 기존 워드프레스 관리자 화면에 들어가 젯팩, 아키스멧 등 오토매틱 사의 계정과 연동돼 있는  블로그 최적화 플러그인을 비활성화한다.
  5. 계정 a의 웹서버 루트 경로에 있는 .htaccess 파일을 편집해 아래 내용을 추가한다. 영구적으로 웹페이지가 이전됐음을 알려 주는 301 리디렉션 기능이다. 도메인 A로 된 모든 경로로 접속한 방문자를 도메인 B로 연결된 호스팅 계정 b의 해당 워드프레스 포스팅으로 리디렉션하는 설정이다. 도메인 A(encodent.com)와 도메인 B(mincheol.im)를 표기하는 형식이 다른 점에 유의한다.
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^encodent\.com$ [NC]
    RewriteRule ^(.*)$ https://mincheol.im/$1 [R=301,L]
    </IfModule>

    ※ 이 설정 방식은 https://linchpinseo.com/htaccess-rules/ 이 포스팅을 참고했다. 아래 후기에 따로 언급하겠지만, 이 부분에 특별한 항목이 없음에도 계정 a의 워드프레스 관리자 환경에 접근할 때 예외처리가 작동하고 있는 점은 미스터리다.

  6. 이제 b 계정의 B 도메인으로 접속하면 이제 앞으로 운영할 워드프레스 블로그를 설정할 수 있게 됐다. 계정 b의 워드프레스 관리자 화면에 들어가 젯팩, 아키스멧 플러그인을 활성화했다.

후반부, SEO와 웹페이지 오류 수정

  1. 계정 a의 웹서버  루트 경로에 있던 검색로봇 설정 파일을 호스팅 계정 b로 옮기고 계정 a에 있는 것을 삭제했다.
  2. 워드프레스 정보꾸러미라는 사이트의 구글 순위를 유지한 채 워드프레스 사이트 주소 변경하기라는 포스팅을 참조해 SEO 설정을 진행했다.
  3. 구글 검색 콘솔에 도메인 B를 추가하고 소유권 확인 절차를 수행해 계정 b의 블로그를 등록했다. 구글 검색 콘솔에서 도메인 A로 운영되고 있는 계정 a의 블로그 설정에서 ‘주소 변경’을 신청했다. 새로운 사이트로 도메인 B를 선택하면 301 리디렉션이 작동하는지 확인하도록 하는 단계였다. 소유권 확인 후 주소 변경이 제출돼 ‘현재 사이트를 이전 중입니다’라는 안내를 받았다.
  4. 네이버 서치 어드바이저에 도메인 B를 추가하고 소유권 확인 절차를 수행해 계정 b의 블로그를 등록했다. 네이버 서치 어드바이저 웹마스터 도구에서 ‘요청’ 항목을 열어 ‘사이트맵 제출’을 선택했다. 사이트맵 URL을 입력하고 ‘확인’했다.
  5. 다음 웹마스터 도구에 도메인 B를 추가하고 소유권 확인 절차를 수행해 계정 b의 블로그를 등록했다. 별도 가입 없이 https://도메인에 대한 PIN코드 발급을 요청해 나타나는 코드를 검색로봇 설정에 추가해 저장했다. 사이트맵 URL을 등록했다. RSS 피드 URL을 등록했다.
  6. 계정 b에 복구된 블로그의 모든 글에서 과거 입력한 도메인 A 기반의 URL 링크를 도메인 B로 바꿨다. 포스팅에 사용한 이미지 파일 주소가 도메인 A 기반의 절대경로로 저장돼 있었기 때문에, 이것도 도메인 B로 바꿨다. 이밖에,블로그 테마를 직접 편집하면서 사용한 주요 이미지 파일의 주소 또한 도메인 A 기반으로 저장돼 있어 도메인 B로 바꿨다.

도메인 변경 소감 이모저모

우선 애초에 얼마 되지 않는 트래픽이라 해도 손해를 감수할 각오를 해야 한다. 도메인이 변경되면 검색엔진에 그걸 알리고 기존 검색결과 우선순위를 보장받는 기능이 구글에서는 지원되지만, 네이버와 다음 등 국내 검색포털의 웹마스터 도구로는 지원되지 않기 때문이다.

그리고 이론과 실제의 차이를 간단히 언급해 두었지만 막상 해 보면 생각보다 더 번거롭고 복잡한 작업이다. 애초에 몇 년 이상 사용해 온 도메인을 바꾸는 것 자체가 큰 부담을 감수해야 하는 결정이고, 여러 변수를 고려하더라도 발생할 수 있는 손실을 예측하기가 어렵다.

가장 시간을 많이 잡아먹은 부분은 위 13단계의 작업 가운데 5단계, 기존 도메인을 이용한 접속이 새 도메인으로 정확히 연결되게 하는 301 리디렉션 설정이었다. 이 설정 자체는 Redirection이라는 워드프레스 플러그인만 써도 된다. 다만 이 작업을 한 뒤에도 기존 계정의 워드프레스 관리자 설정에 접속할 필요가 있을 때 일이 복잡해진다.

이런 얘기다. 도메인 A로 연결시 무조건 도메인 B로 연결되게 할 경우, 더 이상 계정 a의 워드프레스 관리자 주소로 접근할 수 없게 된다. (계정 b의 워드프레스 관리자 주소로 리디렉션되니까.) 다른 모든 접속은 도메인 B로 치환하되, 계정 a의 워드프레스 관리자 주소로 접근할 때에만 도메인 A로 접속하는 것을 허용하도록 예외처리를 해야 했다.

여러 삽질 끝에 결과적으로는 이 예외처리가 작동하고 있는데 왜 되는지 모르겠다는 것이 문제다. 위에서 .htaccess 파일을 편집해 리디렉션 동작을 설정하는 5단계 작업에는 별도의 예외처리가 이뤄지지 않았다. 그런데 몇 번의 실패 끝에 a계정의 워드프레스 관리자 환경에 도메인 A로 접근할 수 있는 상황이다. 몇 가지 워드프레스의 플러그인을 사용해 리디렉션 설정을 했다가 왠지 안 되는 것으로 알고 삭제했는데, 시도했던 예외처리 설정 중 뭔가가 시스템에 남아서 제 역할을 하는 상태인 것으로 추정된다.

210829 작성 완료.