3xx 리다이렉션: 3가지 유형 분류와 5가지 상태 코드

상태코드란, 웹 서버가 클라이언트(브라우저 등)의 요청에 대해 어떤 결과였는지를 숫자로 알려주는 표준 응답 코드입니다.

이 중 3xx 상태코드다이렉션 관련 응답으로, 요청의 방향을 재 정의한다는 의미를 가지고 있습니다. 즉, 서버가 브라우저에게 다른 URL로 이동하라고 지시하는 상태를 나타냅니다.

3xx 리다이렉션은 웹 서버가 클라이언트에게 요청한 자원이 다른 위치에 있으며, 그곳으로 이동하라고 안내하는 역할을 합니다. 이 리다이렉션은 웹사이트 운영 과정에서 다양한 목적으로 사용됩니다.

가장 대표적인 이유는 웹사이트의 URL이 변경되었을 때 기존 주소로 접근한 사용자를 자동으로 새로운 주소로 이동시키기 위함입니다. 예를 들어 도메인을 변경하거나 사이트 구조를 개편할 때, 기존 URL을 그대로 입력한 사용자에게 새로운 위치의 페이지를 안내할 수 있습니다.

검색 엔진 최적화(SEO) 측면에서도 중요한 역할을 합니다. 301 Moved Permanently와 같은 영구 리다이렉션은 기존 페이지의 링크 가치와 검색 순위를 새 URL로 전달해 주기 때문에, 페이지 이동 시에도 검색 순위를 유지하거나 개선할 수 있습니다.

보안을 강화하는 용도로도 활용됩니다. 사용자가 http://로 접속했을 때 자동으로 https://로 이동 시키는 방식이 대표적입니다.

✅ 3xx 리다이렉션 3가지 유형

HTTP Status Code는 사용되는 3xx 리다이렉션은 영구 이동, 임시 이동, 특수 이동과 같이 3가지 유형으로 분류할 수 있습니다.

3xx 상태코드 유형
├─ 3xx 리다이렉션 (Redirection)
├─ 영구 리다이렉션 (Permanent Redirection)
   ├─ 301 moved Permanently
   └─ 308 Permanent Redirect

├─ 임시 리다이렉션 (Temporary Redirection)
   ├─ 302 Found
   └─ 307 Temporary Redirect

└─ 특수 리다이렉션 (Special Redirection)
└─ 303 See Other   임시 리다이렉션이며 메소드 변경 특성

├─ 300 Multiple Choices
└─ 여러 선택지 제공, 실제 리다이렉션보다 선택 안내 목적

├─ 304 Not Modified
└─ 캐시 유효, 리다이렉션 아님 (데이터 재전송 생략)

└─ 305 Use Proxy (비권장)
    └─ 프록시 사용 지시, 현재 대부분 브라우저 미지원
  • 300 Multiple Choices
  • 이 상태코드는 클라이언트가 요청한 리소스에 대해 여러 가지 선택지가 있을 때 반환됩니다. 서버가 여러 옵션 중 하나를 제시하지만, 실제로는 사용자가 선택하도록 하는 경우보다 서버가 자동으로 특정 리소드로 리다이렉션하는 경우가 많아 실무에서는 드물게 사용됩니다.
  • 304 Not Modified
  • 304 Not Modified
    304 상태코드는 클라이언트가 보유한 캐시된 리소스가 최신임을 서버가 알려줄 때 사용됩니다. 이 응답은 리다이렉션이 아니며, 클라이언트가 서버로부터 다시 데이터를 받지 않고 기존 캐시를 그대로 사용할 수 있도록 하여 네트워크 효율을 높입니다.

HTTP 요청 방식(Method)은 클라이언트가 서버에 어떤 동작을 요청하는지를 정의합니다.
3xx 리다이렉션에서는 리다이렉션 시 요청 방식이 그대로 유지되는지 여부가 중요한 요소입니다.

  • GET: 서버에서 데이터를 조회할 때 사용하는 기본적인 방식입니다.
    브라우저 주소창에 입력하거나 링크를 클릭할 때 사용됩니다.
  • POST: 서버로 데이터를 전송할 때 사용됩니다.
    로그인, 폼 제출, 결제 등 민감하거나 중요한 데이터 입력 시 사용됩니다.

※ 예를 들어, POST 요청을 리다이렉션할 때 메서드가 GET으로 바뀌면 문제가 발생할 수 있으므로, 308(영구), 307(임시)과 같은 메서드를 유지하는 리다이렉션이 필요합니다.

🔲 영구 리다이렉션

영구 리다이렉션은 클라이언트가 요청한 리소스가 영구적으로 다른 위치로 이동했음을 서버가 알리는 응답입니다. 대표적인 상태코드는 301 Moved Permanently308 Permanent Redirect가 있습니다.

이 경우, 클라이언트(브라우저나 검색엔진 등)는 앞으로 모든 요청을 새 URL로 자동으로 변경하여 요청해야 하며, 이전 URL은 더 이상 사용하지 않아야 합니다.

특히 SEO(검색엔진 최적화) 측면에서 매우 중요합니다. 301 리다이렉션을 통해 기존 페이지가 쌓아온 검색 순위와 링크 가치가 새 URL로 전달되므로, 사이트 주소 변경이나 페이지 이동 시 검색 순위를 유지하거나 향상하는 데 도움을 줍니다.

또한, 영구 리다이렉션은 사이트 구조 변경, 도메인 이전, URL 표준화 등 다양한 상황에서 사용되며, 사용자와 검색엔진 모두에게 새 위치를 명확하게 안내하는 역할을 합니다.

🔲 임시 리다이렉션

임시 리다이렉션은 클라이언트가 요청한 리소스가 일시적으로 다른 위치에 있음을 서버가 알리는 응답입니다. 대표적인 상태코드는 302 Found와 307 Temporary Redirect가 있습니다.

이 경우, 클라이언트는 이후에도 원래 URL로 요청을 시도할 수 있으며, 임시로 안내된 새 URL로만 해당 시점에 접속하도록 유도됩니다. 따라서 검색엔진은 원래 URL을 유지하며, 임시 이동이기 때문에 SEO에 큰 영향을 미치지 않습니다.

임시 리다이렉션은 사이트 유지보수, 이벤트 페이지, A/B 테스트, 임시 프로모션 등 일시적인 상황에서 주로 사용되며, 사용자에게 새로운 위치를 안내하면서도 원래 주소를 계속 유효하게 유지할 때 적합합니다.

🔲 특수 리다이렉션

특수 리다이렉션은 주로 HTTP 메서드 변경과 관련된 리다이렉션으로, 클라이언트가 요청한 자원을 다른 위치로 안내하면서도 요청 방식에 변화를 주는 경우를 말합니다.

대표적인 상태코드는 303 See Other입니다. 이 상태코드는 주로 POST 요청 후에 클라이언트를 다른 URL로 GET 요청하도록 안내할 때 사용됩니다. 예를 들어, 폼 제출 후 결과 페이지로 안전하게 이동시키는 용도로 활용됩니다.

이 외에도 특수 리다이렉션은 일반적인 영구 또는 임시 리다이렉션과 달리 요청 메서드나 동작 방식을 바꾸어야 할 때 쓰이며, API 응답 처리나 웹 애플리케이션 흐름 제어에 자주 이용됩니다.

✅ 3xx 리다이렉션 5가지 상태 코드

🔲 301 moved Permanently

301 리다이렉션은 새로운 주소가 웹사이트의 URL이 완전히 변경된 경우에 사용합니다. 이는 전화기의 착신 전환과 비슷한 개념으로, 사용자가 기존 주소로 접속해도 자동으로 새 주소로 안내하는 역할을 합니다.

예시로 uknew.co/wordpress-site에서 uknew.co/wordpress-website로 변경되었을 때, 301 리다이렉트를 설정하면 방문자와 검색엔진이 자동으로 새 URL인 uknew.co/wordpress-website로 이동하게 됩니다.

Redirect 301 /wordpress-site http://uknew.co/wordpress-website

HTTP 요청을 HTTPS 요청으로 변경할와 www. 도메인을 www.가 없는 루트 도메인으로 사용할 때 Apache 웹 서버에서는 다음과 같은 설정을 이용합니다.

<VirtualHost *:80>
    ServerName uknew.co
    ServerAlias *.uknew.co www.uknew.co
    DocumentRoot /home/uknew/www
    SuexecUserGroup uknew nobody

    SetEnvIf X-Forwarded-Proto "^https$" HTTPS=on

   # HTTP와 www를 포함한 요청을 HTTPS로 리디렉션
      RewriteEngine On
       RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
       RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
       RewriteRule ^(.*)$ https://uknew.co$1 [R=301,L] 
</VirtualHost>

적용 사례

설명

도메인 변경

사이트 전체 도메인을 변경할 때 사용: example.com → newdomain.com

URL 구조 변경

경로가 바뀐 경우 예: /old-page → /new-page

www/비-www 통일

www.example.com → example.com 또는 반대 방향으로 일괄 통일

HTTP → HTTPS 전환

모든 트래픽을 보안 연결(HTTPS)로: http:// → https://

중복 콘텐츠 정리

하나의 Canonical URL만 남기고 나머지를 리디렉션

🔲 308 Permanent Redirect

308 리다이렉션은 301과 동일하게 리소스가 영구적으로 이동했음을 알리는 응답 코드입니다. 하지만 HTTP 메서드와 요청 본문을 그대로 유지한다는 점에서 차이가 있습니다. POST, PUT과 같이 메서드 보존이 중요한 요청에서 주로 사용됩니다.

예를 들어, 사용자가 POST 방식으로 /submit-form에 데이터를 보냈을 때, 이 요청을 /new-submit-form으로 리디렉션할 필요가 있다면 308을 사용해야 합니다. 301을 사용할 경우, POST가 GET으로 바뀔 수 있어 데이터 손실이나 의도치 않은 동작이 발생할 수 있습니다.

적용 사례

설명

POST 요청 리디렉션

로그인, 폼 제출 등 POST 요청을 새 URL로 보낼 때 메서드 유지 필요 시 사용

API 엔드포인트 이동

API 주소 변경 시 클라이언트의 POST/PUT/DELETE 요청 유지가 필요할 경우

파일 업로드 경로 변경

PUT 메서드를 사용하는 파일 업로드 API의 리디렉션 처리

서버 간 데이터 이전

HTTP 메서드가 중요한 외부 시스템 간 요청 리디렉션에 사용

🔲 302 Found

302 Found는 임시 리다이렉션을 의미하는 상태 코드로, 요청한 리소스가 일시적으로 다른 위치에 존재함을 서버가 클라이언트에게 알릴 때 사용합니다.

예를 들어 유지보수 중 특정 페이지를 임시 안내 페이지로 보낼 때, 특정 조건에 따라 사용자를 로그인 페이지 등으로 안내할 경우를 들 수 있습니다.

302 Found

설명

URL 구조

변경되지 않음 (일시적으로 다른 URL 사용)

SEO 영향

없음 (검색엔진은 기존 URL 기준으로 인덱싱)

요청 메서드

클라이언트에 따라 POST → GET으로 변경될 수 있음

대표 사용 사례

유지보수 안내 페이지, 조건부 로그인 리디렉션 등

🔲 307 Temporary Redirect

POST 방식 폼 데이터를 전송한 후 임시로 다른 URL로 리디렉션 할 때, 유지보수나 이벤트 페이지에서 일시적으로 다른 URL로 안내할 경우 사용합니다.

307 Temporary Redirect

설명

URL 구조

변경되지 않음 (일시적으로 다른 URL 사용)

SEO 영향

없음 (검색엔진은 기존 URL 기준으로 인덱싱)

요청 메서드

유지됨 (POST는 POST로, GET은 GET으로 그대로 전달됨)

대표 사용 사례

유지보수 시 POST 데이터 보호, 로그인 후 원래 위치로 복귀 등

🔲 303 See Other

303 See Other는 클라이언트가 보낸 요청에 대해 서버가 다른 URI에서 결과를 확인하도록 안내하는 임시 리다이렉션 상태 코드입니다. 주로 POST 요청 이후, 결과 확인을 위해 GET 요청으로 전환할 때 사용됩니다.

구분

내용

URL 구조

일시적으로 다른 위치로 이동 (임시 리다이렉션)

SEO 영향

없음 (검색엔진은 원래 URL을 유지)

요청 메서드

변경됨 (POST 등 원래 요청을 GET으로 변경하여 새 URL 요청)

대표 사용 사례

폼 제출 후 결과 페이지로 안내, POST 후 GET 전환 필요 시

HTTP 요청(브라우저N서버)
콘텐츠 내 광고 및 제휴 링크가 포함될 수 있으며, 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 7   +   2   =