단축 URL 뒤에 붙인 파라미터는 어디로 갔나?

리다이렉트 쿼리 포워딩

weburl

난이도: ★★☆☆☆ (단, “baked-in vs forwarded” 구분이 핵심 — 놓치기 쉬움) 연관 노트: 픽셀 트래킹은 언제 찍히나


핵심 요약

  1. 단축 URL은 302 리다이렉트다. 뒤에 ?key=123을 붙여도, 그게 최종 목적지까지 도달하려면 단축 서비스가 “쿼리 포워딩”을 해줘야 한다 — 붙어온 쿼리를 리다이렉트 시 목적지 URL에 이어붙여(merge) 넘겨주는 것. 꺼져 있으면 증발.
  2. “기존 파라미터(예: grade)가 이미 분석 도구에 찍히니 key도 되겠지”는 틀린 근거다. grade는 우리가 단축 URL 뒤에 붙인 게 아니라, 단축링크가 가리키는 목적지 URL에 처음부터 박혀 있던(baked-in) 값이라 forwarding과 무관하게 찍힌다.
  3. 그래서 검증은 가정 말고 실측: 단축도메인/x?key=test 를 직접 열어 최종 주소창 URL에 key가 남는지 눈으로 확인.

왜 헷갈렸나

  • “단축 URL 뒤에 param 붙이면 당연히 목적지로 가겠지” — 단축링크가 리다이렉트라는 걸, 그리고 포워딩이 옵션이라는 걸 간과.
  • “이미 grade=green이 분석 도구에 보이잖아 → 포워딩 되는 거 아냐?” — baked-in(목적지에 원래 있음) vs appended+forwarded(붙여서 전달) 을 구분 못 함. 둘은 도달 경로가 완전히 다르다.

메커니즘

[baked-in] — forwarding과 무관하게 항상 도달
  short/x  ──(302)──▶  landing?grade=green      ← 목적지 URL에 원래 박혀 있음
                       (grade는 여기서 옴)

[appended + forwarded] — forwarding ON일 때만 도달
  short/x?key=123
     │  forwarding OFF →  landing?grade=green            (key 증발)
     │  forwarding ON  →  landing?grade=green&key=123    (붙어온 key를 merge)

key는 고객마다 달라서 목적지에 미리 박을 수 없다(정적 target 하나를 모두 공유). 그러니 반드시 append + forwarding 경로다. 반면 grade는 목적지에 박아둔 것 → grade가 찍힌다는 사실은 “forwarding이 된다”의 증거가 전혀 아니다.


해결 패턴

1) 실측 검증 (가정 금지)
   브라우저에서  https://단축도메인/x?key=test999  열기
   → 최종 주소창이  landing?...&key=test999  이면 forwarding ON
   → key 사라지면 OFF (→ 단축 서비스 설정에서 켜거나, 목적지에 심는 방식으로 우회)

2) merge 동작도 함께 확인
   목적지에 이미 ?a=1 이 있으면 → ?a=1&key=... 로 합쳐지는지,
   ? 가 중복되어 깨지진 않는지

다음에 이 상황을 만나면

“단축 링크 + 추적 파라미터” 조합을 쓸 때:

  • 이 값이 목적지에 baked-in 인가, 링크에 append 인가? (고객별로 다르면 append → forwarding 필요)
  • 단축 서비스의 쿼리 포워딩 설정을 확인했나? (기본값 가정 금지)
  • “다른 param이 이미 잘 찍힌다”를 forwarding 근거로 쓰지 마라 — 그건 baked-in일 수 있다
  • 실제 링크를 열어 최종 URL로 검증했나?

커넥팅 닷

← 선행 개념 (이걸 알아야 이해된다)

  • HTTP 3xx 리다이렉트 — 단축 URL이 곧 302. 붙인 쿼리가 목적지로 자동 전달되지 않을 수 있다는 게 여기서 나온다.
  • 픽셀 트래킹은 언제 찍히나 — 파라미터가 “언제/어디서” 분석 도구에 도달하는지 따지는 같은 사고.

→ 확장 개념 (여기서 더 나아가면)

  • URL 정규화·쿼리 병합 규칙 — 포워딩 시 기존 쿼리와 append 쿼리를 어떻게 합치는가(? 중복, 키 충돌).
  • UTM/어트리뷰션 파라미터 전파 — 리다이렉트 체인에서 추적 param 유실을 막는 일반 문제.

↔ 같은 원리가 적용되는 곳

  • “증거가 실제로 그 경로를 증명하나?” — grade 사례처럼, 관측된 사실이 내가 검증하려는 메커니즘과 다른 경로로 생겼을 수 있다. 인과 착오를 경계.
  • OAuth/리다이렉트에서 state·param 전달 — 리다이렉트 경유 시 파라미터 보존은 어디서나 반복되는 함정.

참고