티스토리 뷰

반응형

GA에서 campaign을 설정해뒀는데 이게 리디렉션을 해주는 페이지의 경우 utm 정보를 유실한 채로 넘어가는 경우가 있다.

서버단에서 페이지를 이동시켜주는 301 리디렉션의 경우 .htaccess 라는 리디렉션 설정 파일에서 무언가 작업을 해주라고 하는데, 내 경우는 302 리디렉션으로 해당 페이지 안에서 script 를 사용해 특정 경우에 맞는 페이지로 이동을 하는 상황이다.

그래서 script를 활용해 초기 URL의 utm 설정값을 변수에 저장해 두었다가 각 경우에 맞는 utm 설정값을 최종 URL 끝에 붙였다.

    var url = window.location.href;
    var utmText = url.indexOf('utm_source');

	// 초기 URL에 utm이 설정된 경우
    if (utmText != -1){
        var utm = url.substring( utmText );
        if ("a의 경우")
        {
            location.href = "/mysite/aaa.html?aaa" + '&' + utm;
        }
        else if ("b의 경우")
        {
            location.href = "/mysite/bbb.html?bbb" + '&' + utm;
        }
        else if ("c의 경우")
        {
            location.href = "/mysite/ccc.html?ccc" + '&' + utm;
        }
        else
        {
            alert("초기 화면으로 돌아갑니다.");
            location.href = "/mysite/main.html" + '?' + utm;
        }
    } else {	// 초기 URL에 utm이 설정되지 않은 경우
        var utm = "";
        if ("a의 경우")
        {
            location.href = "/mysite/aaa.html?aaa";
        }
        else if ("b의 경우")
        {
            location.href = "/mysite/bbb.html?bbb";
        }
        else if ("c의 경우")
        {
            location.href = "/mysite/ccc.html?ccc";
        }
        else
        {
            alert("초기 화면으로 돌아갑니다.");
            location.href = "/mysite/main.html";
        }
    }

중간에 각 케이스별로 주소를 달리하는 부분이 중복으로 들어가 아주 깔끔한 소스는 아닌 것 같은데, 파라미터가 시작하는 부분인 ? 를 이미 URL에 포함하고 있는 경우도 있어 더 줄일 수가 없었다. 조금 더 고민해보다가 간편하게 줄일 수 있는 방법을 찾으면 수정해야지.

반응형
댓글