Redirect
서버가 3xx 상태 코드와 Location 헤더를 응답해 클라이언트를 원래 요청 URL에서 다른 대상 URL로 자동 이동시키는 요청 전달 방식입니다. 입력은 원래 URL 요청이고 출력은 대상 URL로의 재요청입니다.
- 적용 범위
- Redirect의 개념·동작을 확인해야 하는 공개 웹 환경
- 출처 확인일
- 2026-07-23
- 최종 검토
- 2026-07-23
- 정정 이력
- 2026-07-29 이후 기록 없음
정상 동작 조건
요약
확인 절차
Redirect(리다이렉트)는 하나의 자원에 여러 URL을 부여해, 원래 요청한 URL에서 다른 URL로 브라우저를 자동으로 이동시키는 구성요소입니다. 서버는 3으로 시작하는 상태 코드와 이동할 주소를 담은 Location 헤더를 응답하고, 브라우저는 그 주소로 다시 요청을 보냅니다.
사용자는 추가 왕복 요청을 거의 인지하지 못하지만, 요청은 두 번 일어납니다.
상태 코드 구분
리다이렉트의 성격은 상태 코드로 결정됩니다.
| 구분 | 코드 | 의미 | 메서드 처리 |
|---|---|---|---|
| 영구 | 301 Moved Permanently | 주소가 영구 이동 | GET 유지, 그 외는 GET으로 바뀔 수 있음 |
| 영구 | 308 Permanent Redirect | 주소가 영구 이동 | 메서드와 본문 유지 |
| 임시 | 302 Found | 일시적으로 다른 위치 | GET 유지, 그 외는 GET으로 바뀔 수 있음 |
| 임시 | 303 See Other | 다른 자원 참조 | 모든 메서드를 GET으로 변경 |
| 임시 | 307 Temporary Redirect | 일시적 이동 | 메서드와 본문 유지 |
| 특수 | 300 Multiple Choices | 여러 대상 중 선택 | 클라이언트가 목록에서 선택 |
| 특수 | 304 Not Modified | 캐시된 응답이 아직 유효 | 캐시 재사용 지시 |
영구(301·308) 리다이렉트는 검색 엔진과 크롤러가 원래 URL을 새 URL로 갱신하지만, 임시(302·303·307) 리다이렉트는 새 URL을 기억하지 않습니다. POST·PUT·DELETE 처리 후에는 303으로 결과 페이지로 이동시키면 새로고침 시 요청이 다시 전송되는 것을 방지할 수 있습니다.
리다이렉트를 거는 위치
같은 이동이라도 처리 계층이 다르며, 여러 방식을 섞으면 동작 순서를 예측하기 어렵습니다.
| 방식 | 실행 시점 | 특징 |
|---|---|---|
| HTTP 리다이렉트 | 가장 먼저 | 서버가 3xx로 응답, 가장 권장 |
JavaScript(window.location) | HTML 로드 완료 전 | JS 활성 클라이언트에서만 동작 |
HTML <meta http-equiv="Refresh"> | 페이지 로드 후 | HTML 콘텐츠에서만 동작 |
주요 용도는 도메인 정규화(example.com → www.example.com), HTTPS 강제(http:// → https://), URL 구조 변경 시 기존 링크와 SEO 유지입니다.
순환에 주의
리다이렉트가 서로를 가리켜 끝나지 않는 순환(redirect loop)을 만들면 요청이 완료되지 않습니다. MDN에 따르면 이 경우 서버는 500 Internal Server Error를 응답할 수 있고, 브라우저는 "리디렉션이 종료되지 않는다"는 오류 화면을 표시합니다.
[Observation] HTTP 리다이렉트와 HTML meta 리다이렉트를 혼용하지 말고, 리다이렉트 체인이 순환을 만들지 않는지 확인합니다. 리다이렉트는 최소한으로 유지하는 것이 성능에 유리합니다.
관련 오류·증상
Error 10053: Invalid redirect source URL with query string
URL Redirect의 source URL에 지원되지 않는 query string component가 포함되면 Error 10053이 발생합니다.
메이크샵 도메인 변경 후 기존 주소가 열리지 않음
메이크샵 연결 도메인을 바꾼 뒤 기존 주소나 하위 URL이 404·인증서 오류를 반환할 때 새 주소와 이전 주소를 분리합니다.
ERR_TOO_MANY_REDIRECTS
페이지가 서로를 계속 가리켜 브라우저가 리디렉션을 끝내지 못하고 오류를 표시하는 상태입니다.
참고 자료
확인 범위: definition, status-codes, redirect-methods, redirect-loop · 확인일: 2026-07-23