본문 바로가기

개발/정규표현식

티스토리 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
  • 질문 있습니다!

    <script language = javascript>
    var chg_reg = /(https:\/\/1차도메인 티스토리 주소)(\/[0-9]+)(\?.*)?/g
    var online = document.URL;
    if(online.match(chg_reg)){
    document.location.href = online.replace(chg_reg, "https:\/\/2차 도메인주소입력r$2$3");
    }
    </script>

    올려주신 코드를 쓰고 싶은데 1차 도메인 주소와, 2차 도메인 주소 저부분을 바꾸는게 맞나요?

  • 네 맞습니다. 그리고 적으신 댓글 맨뒤에 r 이 붙어있는데 지워주시구요. 혹시 잘 안되시면 알려주세요

  • 저도 이거 해결해야 하는데
    다음에서는 해결이 되는데 구글에서는
    반영이 안되네요ㅠ

  • 네 답글 감사합니다
    티스토리 주소로 글40개가량
    작성하고 그후에 2차도메인 설정을
    했는데 구글에 티스토리 주소로 검색해도
    검색이 되고 2차 도메인 주소로 검색 해도
    이중으로 검색이 되요
    인터넷 찾아보며 하라는건 다한것 같은데
    해결이 안되네요
    다음도 똑같은 현상이 있었는데
    다음은 해결했는데 구글이 해결이 안되네요ㅠ

  • 고맙습니다~ 덕분에 잘 적용했습니다.

  • 대박 2020.08.21 18:29 댓글주소 수정/삭제 댓글쓰기

    대박 입니다~

  • 화이팅 2020.11.23 23:40 댓글주소 수정/삭제 댓글쓰기

    안녕하세요, 문의드립니다.
    현재 2차도메인 사용중인데요, 아직3개월차라 구글 유입이 거의 없다 싶히 하는데, 최근 구글유입이 발생해서 유입경로를 확인해보니, 2차도메인으로 유입이 된것이 아니라 1차도메인(티스도메인)으로 유입이 들어왔습니다.

    혹시나 해서 구글 검색창에 "site:2차도메인 주소" 를 입력해 보았는데, 정상적으로 색인이 되고 있고 검색결과도 정상적으로 나오고 있습니다.

    그래서 혹시나해서 "site:1차도메인(티스주소)를 입력하니, 역시나 검색결과가 나타나고 색인까지 되고 있는 상황이더군요.

    이거는 지금 어떻게 받아들여야하는 현상인건가요? 시간이 지나면 자연스럽게 2차도메인으로 수정이되는 현상인건지, 아니면 따로 수정작업등을 해줘야 하는건가요?

    • 혹시 구글 서치 콘솔에 1차, 2차 주소로 모두 사이트 등록 되어있으신가요?
      만약 아직 1차 주소로 등록되어 있으시다면, 1차 주소로 들어가셔서 url삭제 요청을 각각 해보세요. 시간이 지나면 점차 삭제될거에요.

  • 질문 2021.07.27 16:23 댓글주소 수정/삭제 댓글쓰기

    덕분에 잘 적용이 되었습니다.
    근데
    "xxx.tistory.com/m" url로 작동하는 티스토리 모바일 스킨이 작동하지 않도록 하려는데 어떻게 해도 뒤에 m이 붙어서 모바일 스킨이 보여지네요.
    "xxx.tistory.com/m/500" → "xxx.com/500" 이런 식으로 할 방법이 있을까요?

    • 스크립트에 /m 부분이 있을수도 있다는 정규식표현을 (\m)? 추가하면 됩니다.
      위 표현을 추가하면 그룹이 3개에서 4개로 늘어나니, 치환식도 $2$3에서 하나씩 뒤로 밀어서 $3$4로 수정하면 됩니다.

      예시)
      var chg_reg = /(https:\/\/tadadakcode.tistory.com)(\/m)?(\/[0-9]+)(\?.*)?/g

      document.location.href = online.replace(chg_reg, "https:\/\/tadadakcode.com$3$4");

  • 모험가 2022.05.18 10:50 댓글주소 수정/삭제 댓글쓰기

    관리자의 승인을 기다리고 있는 댓글입니다