본문 바로가기
Dev/script

자바스크립트 link Canonical javascript createElement appendChild window.location.href

by 하양동백 2020. 8. 30.

목차

    결론부터 말하자면 삽질이다.

    어느 날 갑자기 구글 애드센스 광고가 뜨지 않길래 확인해 보니 개인 도메인으로 설정된 무료 도메인의 루트 도메인에서 구글 애드센스 정책 위반이 떴다.

    무료 도메인은 내도메인.한국 의 주소를 사용했다.

    이게 해결이 안되면 광고를 게재할 수가 없단다.

    난감하게도... 이 도메인 주소로 네이버 유입이 제법 있다.

    그래서 혹시나 301 redirection이라도 써 볼까 했지만 그럴 방법이 전혀 없다.

    돈을 쓰면 가능하겠지만...

    일단 새로 호스팅을 받지 않는다는 전제 하에 그렇다.

    그래서 궁리한 것이 내 도메인 한국의 단일 페이지 수정에서 Canonical를 설정해주고, 자바스크립트 location.href로 리다이렉션을 걸어서 옮기는 방법을 생각해 봤다.

    결과는 앞서 말한 데로 삽질이고 실패다.

    물론 훌륭하게 link 엘리멘트도 생성이 되고 페이지별로 Canonical이 생성되었다.

    문제는 내도메인.한국의 주소에 SSL 인증서 설정이 되지 않았기 때문에 네이버나 구글에서 SSL의 주소로 보내는 링크를 이 도메인이 받지를 못한다는 것이다.

    이 링크를 받으려면 SSL 설정이 된 호스팅을 받아야 한다.

    호스팅을 받을 것이라면 이 방법을 쓰지 않고. htacess 파일에서 moved 301 redirection을 걸어 주는 것이 올바른 방법이다.

    <html>
    
    <head>
    
    <script>
    
    var newURL = "exocet2015.tistory.com";
    
    var oldURL = "exocet2015.f4m.kr";
    
    var thisURL = location.href;
    
    var renewURL = thisURL.replace(oldURL,newURL);
    
    var renewURL = renewURL .replace("http:","https:");
    
    var linkCanonical= document.createElement("link");
    
    linkCanonical.setAttribute("rel", "canonical");
    
    linkCanonical.setAttribute("href", renewURL);
    
    document.head.appendChild(linkCanonical);
    
    window.location.href = renewURL;
    
    </script>
    
    </head>
    
    <body>
    
    </body>
    
    </html>

    아무튼 혹시 차후에라도 자바스크립트로 헤더에 태그를 추가하고자 한다면 위의 소스를 참고하면 된다.

    핵심은 createElement를 이용해서 element 태그를 생성하고 문자열 처리 함수인 {{string}}. replace('a', 'b');

    {{string}}의 문자열에서 a를 찾아서 b로 바꾼 값을 넣어준다.

    이때 Attribute는 setAttirbute함수로 잡는다.

    만들어진 객체는 appendChild 함수로 적절한 위치에 추가한다.

    head.appendChild(ElementObj)를 쓰면 헤더에 가서 붙고, body.appendChild(ElementObj)하면 내용 어딘가에 가서 붙는다.

    #아이디를 설정하면 아이디 객체에 붙일 수 있다.

    헬로비너스 나라 몸매 미니스커트 각선미 대박

    반응형

    댓글