본문 바로가기

개발/정규표현식

티스토리 2차 도메인 자동이동 정규식 스크립트

개발할 때 자주 쓰이는 정규식이 뭐가 있을까?

 

전화번호, 이메일, 숫자문자열 판단 등등 기초적인 것부터 복잡한 정규식들까지 정말 다양하고 많지만, 가장 최근에 작성해서 반영한 스크립트가 있어, 이것부터 정리해볼까 한다.

 

최근에 블로그를 처음 시작해서 기존 1차 도메인(tadadakcode.tistory.com) 일 때 포스팅을 작성했는데, 티스토리 1차 도메인 주소로 구글서치콘솔에 등록해 색인 완료가 된 상태였다.

 

그 상태에서 2차 도메인(tadadakcode.com)을 구매해 설정하고 서치콘솔에도 2차 도메인 주소를 추가했는데, 색인이 되질 않았다.

(당연히 사이트맵도 2차 도메인에 맞게 새로 생성해서 올렸다.)

 

아니.. 정확히는 일부는 색인이 된 것 같은데, 구글 검색결과에는 노출이 되지 않았다. 

해당 포스팅 글 제목으로 검색해보니 1차 도메인 당시 작성한 글만 노출되고 있었고... 검색 결과 리스트 최하단을 보니,

아래와 같은 메시지를 확인할 수 있었다

 

결과가 생략되었다고 한다.

 

파란색 링크 - [생략된 결과를 포함하여 다시 검색] 을 클릭하여 생략된 결과를 보니, 2차 도메인 주소로 색인된

문서를 볼 수 있었다. 결론적으로 중복문서로 판단되어 2차 도메인 주소에서 색인된 문서는 생략된 것이었다.

 

 

 


자, 이 상태를 어쩌지? 하면서 구글링을 해보았다.

문서를 삭제하고 새로 쓰라, 어쩔수 없다 등등 여러 가지 의견들이 있었는데...

 

기존에 포스팅한 글들은 어쩔 수 없다. 2차 도메인 주소로 리다이렉트(=포워딩, 자동이동) 해주는 게 최선으로 보인다.

...라고 자체적으로 결론을 내렸고, 찾아낸 자바스크립트를 살펴보았다.

<script language = javascript>
  var from_url = 'xxx.tistory.com';
  var dest_url = 'abcd.com';
  var online = document.URL;
  if(online.match(from_url)) document.location.href = online.replace(from_url, dest_url);
</script>

바로 위와 같은 형식이었는데, 1차 도메인이 xxx.tistory.com 인데 2차 도메인이 abcd.com 이라면,

해당 부분만 바꿔서 이동시키는 자바스크립트였던 것이다.

 ex) http://xxx.tistory.com/10    -->   https://abcd.com/10

 

응, 심플하네~ 라고 생각하면서, 블로그관리 > 스킨편집 > html 편집으로 이동.

<head></head> 태그 사이에 해당 부분을 내 주소에 맞게 수정하고 붙여 넣은 후, 

[적용] 하고 [새로고침] 을 눌러보았는데....

 

미리보기 오류 발생.

 

일단 포스팅된 글들은 잘 이동이 된다. 그렇지만 이건 뭐지? 스킨 미리보기 화면 링크 주소마저 2차 도메인으로 변경해버려서 미리보기가 제대로 동작하지 않는 것이었다.

 


포스팅 글만 2차 주소로 이동시켜주면 좋겠는데 말이다. 그래서 포스팅 글의 기존(1차 도메인) url 형식을 살펴보았다.

포스팅 글 번호만 있거나, 추가적인 파라미터로 카테고리 아이디를 가지는 경우가 존재한다.

 

https://tadadakcode.tistory.com/6

https://tadadakcode.tistory.com/6?category=899553

 

 

위 url 형식을 정규식으로 풀어보면 아래와 같은데, 크게 3개의 그룹으로 나눌 수 있다.

여기서 각 그룹들은 괄호 () 기호로 구분된다.

 

기존 url 정규식 표현

/(https:\/\/tadadakcode.tistory.com)(\/[0-9]+)(\?.*)?/g

샘플 url

http://tadadakcode.tistory.com/6?category=899553

 

1그룹: (https:\/\/tadadakcode.tistory.com)

 - 1차 도메인 주소. 우리가 바꿔야 할 부분이다. 

 

2그룹: (\/[0-9])

 - 포스팅 번호. 슬러시(/) 문자에 이어서 숫자만 나온다.

 

3그룹: (\?.*)?

 - 추가적으로 파라미터가 붙는 경우이다. 포스팅 번호 바로 뒤에 물음표(?) 다음에는 어떤 문자라도 나올 수 있다.

 - 괄호 바깥에 물음표(?)는 이 그룹이 없거나 있을 수 있을 때 쓰는 정규식 표현이다.

 


자, 이제 작성된 정규식으로 기존 자바스크립트를 수정해 반영해보자.

<script language = javascript>
  var chg_reg = /(https:\/\/tadadakcode.tistory.com)(\/[0-9]+)(\?.*)?/g
  var online = document.URL;
  if(online.match(chg_reg)){
    document.location.href = online.replace(chg_reg, "https:\/\/tadadakcode.com$2$3");
  }
</script>

위 스크립트는 다음과 같은 동작을 수행한다. 

 

1. 호출된 url 이 기존 url정규식(chg_reg) 과 같은 형태라면,

2. 호출 url을 변경해서 리다이렉트(자동이동) 시킨다. 

 - 변경되는 url은 그룹1 부분만 2차 도메인 주소로 바꾸고 그룹2($2), 그룹3($3)은 그대로 유지한다.

 

 

반영해보니, 스킨편집화면에서 미리보기도 잘 보이고 포스팅 글들도 2차 도메인 주소로 잘 이동된다.

 

일단은 만족스럽다.

 

 

 

'개발 > 정규표현식' 카테고리의 다른 글

숫자표현 정규식 스텝by스텝  (3) 2020.03.12