13분 분량
HTTP 리디렉션 상태 코드 정리: 301, 302, 303, 307, 308 등
3xx 상태 코드의 의미와 301·302·303·307·308의 영구 여부, 메서드 유지, 캐싱, SEO 차이를 비교하고 nginx·Apache·PHP 예제를 제공합니다.
글 읽기무료 리디렉션 도구
URL이 영구 리디렉션인지 임시 리디렉션인지 확인하세요. TrueURL이 모든 홉(리디렉션 한 단계)을 검사해 검색엔진이 이 이동을 영구 이전으로 처리할지 알려 줍니다.
Enter 키를 누르면 검사합니다
Cloudflare 엣지는 항상 인증서를 검증하므로 이 옵션으로 검증을 건너뛸 수는 없습니다. 인증서 문제는 결과에 표시됩니다.
첫 번째 요청과 함께 최대 16 KB까지 전송됩니다. Content-Type 헤더를 직접 지정하지 않으면 JSON 본문은 application/json으로, 그 밖의 본문은 폼 데이터로 전송됩니다.
1~50 사이로 지정합니다. 브라우저는 리디렉션 20회 후 멈춥니다.
사이트에 따라 휴대폰, 크롤러, 링크 미리보기 봇을 각기 다른 곳으로 리디렉션할 수 있습니다.
체인의 모든 요청에 함께 전송됩니다.
사용자 지정 헤더가 없습니다.
이 헤더를 전송하려면 값을 입력하세요. 헤더 값은 저장되지 않습니다.
HTML 페이지에 있는 <meta http-equiv="refresh"> 태그와 Refresh 헤더를 따라갑니다.
페이지 스크립트에 있는 location.href = "…"처럼 단순하고 조건 없는 리디렉션을 따라갑니다.
설정은 이 브라우저에 저장됩니다. 쿠키, 헤더 값, POST 본문은 저장되지 않습니다.
HTTP 상태 코드는 서버가 검색엔진에 어떤 종류의 이동인지 알리는 수단입니다. 영구 리디렉션(301 또는 308)은 예전 URL이 완전히 사라졌다는 뜻이므로, 검색엔진은 새 URL을 색인하고 링크 같은 신호를 새 URL로 통합합니다. 임시 리디렉션(302, 303, 307)은 예전 URL이 다시 돌아온다는 뜻이므로 대개 예전 URL이 색인에 남습니다.
방문자는 차이를 전혀 느끼지 못하기 때문에 잘못된 코드가 몇 달 동안 방치되기도 합니다. 많은 도구가 따로 지정하지 않으면 임시 리디렉션을 보냅니다. PHP의 header('Location: ...'), Express의 res.redirect(), Apache의 Redirect 지시어는 모두 기본값이 302입니다.
TrueURL은 첫 번째 홉만이 아니라 체인의 모든 홉을 검사합니다.
301과 308은 모두 영구 리디렉션이며 Google은 둘을 똑같이 처리합니다. 차이는 요청 메서드에 있습니다. 301 이후 브라우저는 POST를 GET으로 바꿀 수 있지만, 308은 메서드와 본문이 유지되도록 보장합니다. 일반 페이지에는 301을, 계속 POST 요청을 받아야 하는 API 엔드포인트나 폼 전송 대상에는 308을 사용하세요. 임시 리디렉션도 마찬가지입니다. 302는 메서드를 바꿀 수 있지만 307은 절대 바꾸지 않습니다.
모든 3xx 코드의 전체 비교는 HTTP 리디렉션 상태 코드 정리에서 읽어 보세요.
그 밖의 모든 경우, 특히 사이트 이전과 URL 변경에는 301을 사용하세요.
13분 분량
3xx 상태 코드의 의미와 301·302·303·307·308의 영구 여부, 메서드 유지, 캐싱, SEO 차이를 비교하고 nginx·Apache·PHP 예제를 제공합니다.
글 읽기위에 예전 URL을 입력하세요. TrueURL은 리디렉션을 자동으로 따라가지 않는 방식으로 URL을 요청해 모든 홉의 정확한 상태 코드를 보여 줍니다. 명령줄에서 curl -I https://example.com/old-page는 -L을 추가하지 않으면 첫 번째 응답만 보여 주며, meta refresh나 JavaScript 리디렉션은 감지하지 못합니다. curl 옵션은 URL 리디렉션 확인 방법 가이드에서 설명합니다.
Google은 301, 302를 비롯한 서버 측 리디렉션에서 PageRank가 손실되지 않는다고 밝혔습니다. 차이는 표준 URL 신호에 있습니다. 301은 Google에 새 URL을 색인하라고 알리고, 302는 예전 URL을 유지하라는 의미로 전달됩니다. 두 페이지가 모두 다시 크롤링되면 대개 순위가 새 URL로 자리 잡습니다.
Google은 리디렉션을 최소 1년간 유지하라고 권장하지만, 계속 유지하는 편이 더 안전합니다. 예전 링크, 북마크, 다른 사이트의 참조는 몇 년 동안 예전 URL을 계속 사용하기 때문입니다. 리디렉션 규칙을 유지하는 데는 비용이 거의 들지 않습니다.
흔한 원인은 기본값이 302인 플러그인이나 프레임워크, 직접 설정한 규칙보다 먼저 실행되는 CDN 또는 호스팅 규칙, 캐시된 예전 응답입니다. 각 홉을 살펴보세요. 302가 설정한 규칙이 처리하는 것과 다른 호스트나 경로에서 나온다면 다른 계층이 이를 추가하고 있는 것입니다.
네. 브라우저는 301과 308 리디렉션을 오랫동안, 흔히 캐시를 지울 때까지 저장할 수 있으므로, 잘못된 301은 이미 그 리디렉션을 따라간 방문자에게 계속 남을 수 있습니다. 새 규칙을 테스트하는 동안에는 302나 짧은 Cache-Control: max-age를 사용하고, 규칙이 올바르게 동작하면 301로 바꾸세요. TrueURL은 응답을 캐시하지 않으므로 항상 서버가 지금 보내는 응답을 보여 줍니다.
SEO 측면에서는 그렇지 않으며, Google은 둘을 똑같이 처리합니다. 308은 POST 요청을 받는 API 엔드포인트처럼 요청 메서드를 유지해야 할 때만 더 낫습니다. 아주 오래된 일부 클라이언트는 308을 이해하지 못하므로, 웹페이지에는 여전히 301이 안전한 기본 선택입니다.
홈페이지가 정말로 가장 적합한 대체 페이지일 때만 그렇게 하세요. Google은 삭제된 페이지를 홈페이지로 리디렉션하는 것을 소프트 404로 처리할 수 있습니다. 가장 비슷한 대체 페이지로 리디렉션하고, 그런 페이지가 없다면 410 Gone이나 404 Not Found를 반환하세요.