URL 구조 완전 정복 — 프로토콜·도메인·경로·쿼리스트링
주소창의 긴 URL은 무작위 문자열이 아니라 정해진 부품의 조합입니다. 각 부분이 무슨 일을 하는지 알면, 추적 파라미터를 떼거나 링크를 점검하는 일이 쉬워집니다.
URL의 구성 요소
예시: https://shop.example.com:443/items/42?color=red&size=L#reviews
| 부분 | 예시 | 역할 |
|---|---|---|
| 프로토콜 | https | 통신 방식(http/https 등) |
| 호스트 | shop.example.com | 서버 주소(도메인) |
| 포트 | 443 | 접속 문(생략 시 기본값) |
| 경로 | /items/42 | 서버 안의 위치 |
| 쿼리스트링 | ?color=red&size=L | 추가 조건·옵션 |
| 프래그먼트 | #reviews | 페이지 안의 특정 위치(앵커) |
쿼리스트링과 파라미터
- ? 뒤부터가 쿼리스트링이고, 이름=값 쌍을 &로 이어 붙입니다.
- 같은 이름이 여러 번 올 수도 있습니다 —
tag=a&tag=b처럼 목록을 전달. - 페이지·서버는 이 값을 읽어 검색어·페이지 번호·정렬 같은 동작을 바꿉니다.
utm·gclid 추적 파라미터
- utm_source·utm_medium·utm_campaign — 유입 경로를 분석하기 위한 표식. 페이지 동작에는 영향 없음.
- gclid·fbclid — 광고 클릭을 식별하는 값. 광고 성과 측정용.
- 깔끔한 공유 링크가 필요하면 이런 추적 파라미터를 빼도 페이지는 정상 동작합니다.
퍼센트 인코딩
URL에는 영문·숫자와 일부 기호만 안전하게 들어갑니다. 한글·공백 등은 퍼센트 인코딩(UTF-8 바이트를 %XX로 표기)으로 바뀝니다. 그래서 '도구'가 %EB%8F%84%EA%B5%AC처럼 보이죠. 추적 파라미터를 만들거나 직접 인코딩·디코딩할 일이 잦다면 인코더·디코더와 UTM 빌더도 함께 쓰면 편합니다.
?는 경로가 끝나고 쿼리스트링이 시작된다는 표시이고, &는 여러 개의 쿼리 파라미터를 잇는 구분자입니다. 예를 들어 ?page=2&sort=new는 page=2와 sort=new라는 두 파라미터를 전달합니다. 각 파라미터는 이름=값 형태이며, 서버나 페이지가 이 값을 읽어 동작을 바꿉니다.
대부분 지워도 페이지는 정상적으로 열립니다. utm_* 파라미터는 유입 경로를 분석하기 위한 추적용이고, gclid·fbclid는 광고 클릭을 식별하는 값입니다. 링크를 깔끔하게 공유하고 싶다면 이런 추적 파라미터를 빼도 됩니다. 다만 그 링크의 성과 측정이 필요한 경우라면 남겨 둬야 합니다.
URL에는 영문·숫자와 일부 기호만 안전하게 쓸 수 있어서, 한글이나 공백 같은 문자는 퍼센트 인코딩(UTF-8 바이트를 %XX로 표기)으로 변환됩니다. 그래서 '도구'가 %EB%8F%84%EA%B5%AC처럼 보입니다. 브라우저가 자동으로 인코딩·디코딩하므로 보통은 신경 쓰지 않아도 되며, 파서 도구로 디코딩하면 원래 글자를 확인할 수 있습니다.