Django 프론트& 백엔드 개발

href='?page=2'가 현재 경로를 유지하는 이유

Data Jun 2026. 1. 17. 09:51

페이지네이션을 구현하다 보면 href='?page=2'처럼
경로 없이 쿼리 스트링만 사용하는 경우를 자주 보게 된다.
이 글에서는 왜 이런 링크가 정상적으로 동작하는지,
브라우저가 해당 URL을 어떻게 해석하는지 핵심만 정리한다.

 

1. href='?page=2' 는 왜 현재 경로를 유지할까?

페이지네이션이나 검색 기능을 구현하다 보면
다음과 같은 코드를 자주 보게 된다.

<a href="?page=2">next</a>

처음 보면 이런 의문이 생긴다.

“전체 경로를 안 썼는데,
왜 현재 페이지에서 정상적으로 이동할까?”

 

이유는 브라우저의 URL 해석 규칙 때문이다.

 

2. ?로 시작하는 URL은 상대 경로다

<a href="?page=2">

이 URL은:

  • 절대 경로도 아니고
  • 전체 URL도 아니다

현재 페이지를 기준으로 해석되는 상대 경로다.

 

3. ?의 정확한 역할

?는 경로를 의미하지 않는다.
단지 다음을 뜻한다.

“여기부터는 쿼리 스트링이다”

 

새로운 경로를 지정하지 않았고 기존 경로를 그대로 사용하겠다는 의미다.

 

4. 브라우저의 실제 해석 방식

# 현재 페이지 URL
https://example.com/articles/

# 링크
<a href="?page=2">

# 브라우저 해석 결과
https://example.com/articles/?page=2

# /articles/ → 유지
# ?page=2 → 새로 적용

 

5. 정리하면

?page=2는 “현재 URL의 경로를 기준으로
쿼리 스트링만 새로 붙인 위치로 이동하라”는 의미의
상대 경로이다.