리뉴얼·이전 · 공식 문서
301 302 리다이렉트 차이와 상황별 선택 기준
301은 영구 이동이라 검색 결과에 새 URL이 보이고, 302는 임시 이동이라 기존 URL이 남습니다. 되돌리지 않을 변경에는 301, 점검처럼 잠시 보내는 경우에는 302를 고르며, 구글은 308을 301과, 307을 302와 같게 처리합니다.
리디렉션은 기존 URL로 들어온 사용자와 크롤러를 다른 URL로 보내는 설정입니다. 구글 한국어 문서는 「리디렉션」, 네이버 문서는 「리다이렉션」·「리다이렉트」로 적으며 모두 같은 말입니다.
301과 302는 둘 다 사용자를 새 URL로 보냅니다. 차이는 검색엔진이 어느 URL을 검색 결과에 남기느냐에 있어서, 고르기 전에 이 변경이 영구인지부터 정합니다.
발견 01
301은 검색 결과에 새 URL을, 302는 기존 URL을 남기는 것이 가장 큰 차이입니다
Permanent redirects: Show the new redirect target in search results. Temporary redirects: Show the source page in search results.
영구 리디렉션은 검색 결과에 새 리디렉션 대상을, 임시 리디렉션은 원래 페이지를 보인다.
| 구분 | 301 (영구) | 302 (임시) |
|---|---|---|
| 검색 결과에 보이는 URL | Permanent redirects: Show the new redirect target in search results.영구 리다이렉트: 검색 결과에 새 리다이렉트 대상 URL을 보여 준다. | Temporary redirects: Show the source page in search results.임시 리디렉션: 검색 결과에 원래 페이지를 보인다. |
| 색인 처리 | Googlebot follows the redirect, and the indexing pipeline uses the redirect as a signal that the redirect target should be canonical.Googlebot 은 리디렉션을 따르고, 색인 생성 파이프라인은 리디렉션 대상이 표준이어야 한다는 신호로 쓴다. | Googlebot follows the redirect, but the indexing pipeline doesn't use the redirect as a signal that the redirect target should be canonical. The target page might still be indexed if other canonicalization signals are present.Googlebot 은 임시 리디렉션을 따라가지만, 색인 단계는 그 리디렉션을 대상이 표준이어야 한다는 신호로 쓰지 않는다. 다른 표준 신호가 있으면 대상 페이지가 색인될 수는 있다. |
| 신호의 세기 | Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.구글은 리디렉션을 따르고, 리디렉션 대상을 처리해야 한다는 강한 신호로 쓴다. | By default, Google's crawlers follow the redirect, and Google systems use the redirect as a weak signal that the redirect target should be processed.구글 크롤러는 기본적으로 리디렉션을 따르고, 리디렉션 대상을 처리해야 한다는 약한 신호로 쓴다. |
| 언제 쓰나 | Use permanent redirects when you're sure that the redirect won't be reverted.리디렉션을 되돌리지 않는다고 확신할 때 영구 리디렉션을 쓴다. | If you just want to send users to a different page temporarily, use a temporary redirect.사용자를 잠시 다른 페이지로 보내려면 임시 리디렉션을 쓴다. |
| 네이버 | 사이트나 페이지를 변경할 경우 301 Permanently Moved 형식의 redirect를 사용해 주세요. | 사이트의 장애나 잠시 페이지를 변경할 경우 302 Temporarily Moved 형식의 redirect를 사용해 주세요. |
302를 걸면 구글은 기존 URL을 표준으로 보고 검색 결과에 남깁니다. 되돌릴 일 없는 변경에 302를 쓰면 새 URL이 표준이 되는 신호가 약해집니다.
구글은 리디렉션을 걸어도 옛 URL과 새 URL을 모두 기억한다고 적었습니다(원문: When you redirect a URL, Google keeps track of both the redirect source (the old URL) and the redirect target (the new URL).) 그래서 이전 뒤에도 옛 URL이 가끔 보일 수 있습니다.
발견 02
상황별 선택 기준은 9가지이고, 서버 측 영구 리디렉션이 기본입니다
| 상황 | 고를 것 | 검색 결과에 보이는 URL | 공식 문서 원문 |
|---|---|---|---|
| URL을 되돌리지 않고 바꿀 때(URL 구조 변경, 도메인 변경) | 301 (또는 308) | 새 URL | Use permanent redirects when you're sure that the redirect won't be reverted. If you need to change the URL of a page as it is shown in search engine results, we recommend that you use a permanent server-side redirect whenever possible.되돌리지 않을 것이 확실하면 영구 리디렉션을 쓴다. 검색 결과에 보이는 페이지 URL을 바꿔야 한다면 가능할 때마다 서버 측 영구 리디렉션을 권한다. |
| 두 사이트나 페이지를 하나로 합칠 때 | 301 (또는 308) | 새 URL | You're merging two websites and want to make sure that links to outdated URLs are redirected to the correct pages.두 웹사이트를 합치면서 옛 URL로 가는 링크가 맞는 페이지로 넘어가게 하려는 경우. |
| 페이지를 지우고 대신할 페이지가 있을 때 | 301 (또는 308) | 새 URL | You removed a page and you want to send users to a new page.페이지를 없애고 사용자를 새 페이지로 보내고 싶을 때. |
| http·www 처럼 같은 페이지의 URL이 여러 개일 때 | 301 (또는 308) | 대표 URL | If, for example, your home page can be reached in multiple ways (for instance, https://example.com/home, http://home.example.com, or https://www.example.com), it's a good idea to pick one of those URLs as your preferred (canonical) destination, and use redirects to send traffic from the other URLs to your preferred URL.예를 들어 홈페이지에 여러 URL로 들어올 수 있다면 그중 하나를 선호(표준) URL로 정하고, 나머지 URL에서 리디렉션으로 보내는 것이 좋다. |
| 점검·일시 중단으로 잠시 안내 페이지를 보일 때 | 302 (또는 307) | 기존 URL | If you just want to send users to a different page temporarily, use a temporary redirect. For example, if a service your site offers is temporarily unavailable, you can set up a temporary redirect to send users to a page that explains what's happening, without compromising the original URL in search results.사용자를 잠시 다른 페이지로 보내려면 임시 리디렉션을 쓴다. 예를 들어 서비스를 잠시 쓸 수 없을 때 상황을 설명하는 페이지로 보내도, 검색 결과의 원래 URL은 그대로 남는다. |
| 양식 제출(POST) 처리 URL을 옮기고 요청 방식을 그대로 둘 때 | 영구는 308, 임시는 307 | 308은 새 URL, 307은 기존 URL | For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead. The 307 (Temporary Redirect) status code indicates that the target resource resides temporarily under a different URI and the user agent MUST NOT change the request method if it performs an automatic redirection to that URI.역사적인 이유로 사용자 에이전트는 다음 요청에서 POST 를 GET 으로 바꿀 수 있으며, 원하지 않으면 308 을 쓴다. 307 은 대상이 잠시 다른 URI 에 있음을 뜻하고, 자동으로 따라갈 때 요청 방식을 바꾸면 안 된다. |
| 서버 설정을 바꿀 수 없을 때 | meta refresh 0초(영구), 0초 초과(임시) | 0초는 새 URL, 0초 초과는 기존 URL | If server-side redirects aren't possible to implement on your platform, meta refresh redirects may be a viable alternative. Google Search interprets instant meta refresh redirects as permanent redirects. Google Search interprets delayed meta refresh redirects as temporary redirects.플랫폼에서 서버 측 리디렉션을 쓸 수 없다면 meta refresh 가 대안이 될 수 있다. 구글은 즉시 meta refresh 를 영구로, 지연 meta refresh 를 임시로 해석한다. |
| 서버 설정과 meta refresh 모두 쓸 수 없을 때 | 자바스크립트 location | 구글이 렌더링에 성공하면 새 URL | Only use JavaScript redirects if you can't do server-side or meta refresh redirects. This means that if you set a JavaScript redirect, Google might never see it if rendering of the content failed.서버 측이나 meta refresh 리디렉션을 쓸 수 없을 때만 JavaScript 리디렉션을 쓴다. 콘텐츠 렌더링이 실패하면 구글이 그 리디렉션을 끝내 보지 못할 수도 있다. |
| 어떤 리디렉션도 걸 수 없을 때 | 새 페이지로 가는 안내 링크(crypto 리디렉션) | 구글이 리디렉션으로 알아챌 때만 새 URL | The simplest way to do this is to add a link pointing to the new page accompanied by a short explanation. Don't rely on crypto redirects for letting search engines know that your content has moved unless you have no other choice.가장 쉬운 방법은 새 페이지로 가는 링크와 짧은 설명을 넣는 것이다. 다른 선택이 없는 경우가 아니면 crypto 리디렉션에 기대지 않는다. |
Choosing a redirect depends on how long you expect the redirect will be in place and what page you want Google Search to show in search results:
어떤 리디렉션을 고를지는 리디렉션을 얼마나 오래 둘지, 검색 결과에 어느 페이지를 보이고 싶은지에 달려 있다.
| 순서 | 구글이 적은 방법 | 종류 | 설정 위치 |
|---|---|---|---|
| 1 | HTTP 301 (moved permanently) | 영구 | 서버 측 |
| 2 | HTTP 308 (moved permanently) | 영구 | 서버 측 |
| 3 | meta refresh(0초) | 영구 | HTML 메타 태그 |
| 4 | HTTP refresh(0초) | 영구 | HTTP 헤더 |
| 5 | JavaScript location | 영구 | 자바스크립트 |
| 6 | crypto 리디렉션(안내 링크) | 영구 | 본문 링크 |
| 7 | HTTP 302 (found) | 임시 | 서버 측 |
| 8 | HTTP 303 (see other) | 임시 | 서버 측 |
| 9 | HTTP 307 (temporary redirect) | 임시 | 서버 측 |
| 10 | meta refresh(0초 초과) | 임시 | HTML 메타 태그 |
| 11 | HTTP refresh(0초 초과) | 임시 | HTTP 헤더 |
구글은 이 표를 해석 정확도 순으로 늘어놓았다고 적었습니다(원문: The following table explains the various ways you can use to set up permanent and temporary redirects, ordered by how likely Google is able to interpret correctly (for example, a server side redirect has the highest chance of being interpreted correctly by Google).) 서버 설정에 손댈 수 있다면 첫 두 줄인 301·308을 씁니다.
네이버도 자바스크립트 리디렉션은 자제하고, meta refresh보다 HTTP 리디렉션을 쓰라고 적었습니다.
| 항목 | 네이버 원문 |
|---|---|
| 301 쓰는 법 | 알려주는 방법은 http 규약에 따라 301 permanently moved 형식의 redirect 를 사용하여 서버에서 응답해주시기 바랍니다. |
| 302 쓰는 경우 | 이렇게 원하지 않는 기존 검색로봇이 수집한 원래 페이지의 정보를 유지하기를 원하신다면, 사이트에 일시적인 장애가 있거나 잠시 페이지를 변경 시 http 규약에 따라 302형식의 redirect를 사용하여 서버에서 응답해주시기 바랍니다. |
| 자바스크립트 | 따라서 url 링크 또는 redirect 처리 시에는 자바스크립트 함수를 사용하지 않는 것이 검색로봇에게 올바른 정보를 알려주는 데 도움이 됩니다. |
| meta refresh | 만약 해당 주소가 redirect 되는 것을 방문자에게 알리고 싶다면 meta refresh를 사용할 수도 있으며, 네이버의 검색 로봇은 meta refresh를 인식합니다. 다만, HTML 4.01 표준에서는 meta refresh 를 사용하지 않기를 권장하고 있으므로 되도록이면 HTTP redirect를 사용해 주시기 바랍니다. |
발견 03
구글은 308을 301과, 307을 302와 같게 처리하고, 둘의 차이는 요청 방식에 있습니다
| 코드 | 구글 크롤러의 처리 | HTTP 표준(RFC 9110) |
|---|---|---|
| 308 | Equivalent to 301.301 과 같다. | For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead.역사적인 이유로 사용자 에이전트는 다음 요청에서 POST 를 GET 으로 바꿀 수 있다. 이것을 원하지 않으면 308(Permanent Redirect)을 대신 쓸 수 있다. |
| 307 | Equivalent to 302.302 와 같다. | The 307 (Temporary Redirect) status code indicates that the target resource resides temporarily under a different URI and the user agent MUST NOT change the request method if it performs an automatic redirection to that URI. Since the redirection might be altered on occasion, the client ought to continue to use the target URI for future requests.307 은 대상이 잠시 다른 URI 에 있음을 뜻하며, 자동으로 따라갈 때 요청 방식을 바꾸면 안 된다. 리디렉션이 바뀔 수 있으므로 클라이언트는 이후에도 원래 URI 를 계속 쓴다. |
While Google treats these status codes the same way, keep in mind that they're semantically different. Use the status code that's appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.
구글은 이 상태 코드들을 같게 처리하지만 뜻은 서로 다르다. 다른 클라이언트(전자책 단말기, 다른 검색엔진 등)도 쓸 수 있도록 리디렉션에 맞는 상태 코드를 쓴다.
curl 공식 문서도 301·302·303에서는 POST를 GET으로 바꿔 다시 요청한다고 적었습니다(원문: When curl follows a redirect and if the request is a POST, it sends the following request with a GET if the HTTP response was 301, 302, or 303.) 문의·신청 양식을 받는 URL을 옮길 때 308·307이 쓰이는 이유입니다.
일반 페이지 이동이라면 구글 검색에서 301과 308의 처리는 같습니다. 둘 다 영구 이동의 뜻에 맞는 코드이므로, 서버에서 설정하기 쉬운 쪽을 고릅니다.
발견 04
같은 기준이라도 B2B·B2C·B2G 사이트에서 고르는 코드가 달라지는 자리가 있습니다
예시 ① SaaS 기업의 요금제 페이지 통합(B2B)
연도별로 나뉜 요금제 페이지 세 개를 하나로 합치는 경우입니다. 다시 나눌 계획이 없으니 옛 URL 셋을 새 요금제 페이지로 301을 겁니다.
체험 신청 양식이 POST로 보내는 처리 URL도 바뀐다면, 그 URL만 308로 옮겨 요청 방식을 그대로 둡니다.
예시 ② 쇼핑몰의 기획전과 단종 상품(B2C)
시즌 기획전 기간에 상시 카테고리 URL을 잠시 기획전으로 보내는 경우는 302입니다. 기획전이 끝나면 카테고리 URL이 그대로 검색 결과에 남아 있습니다.
단종된 상품의 상세 페이지를 후속 모델로 보내는 경우는 되돌릴 일이 없으므로 301입니다.
예시 ③ 공공기관 누리집의 점검과 개편(B2G)
야간 서버 점검 동안 민원 안내 페이지를 점검 안내 페이지로 보내는 경우는 302입니다. 구글 문서가 임시 리디렉션의 예로 든 상황과 같습니다.
누리집 개편으로 게시판 URL 형식이 바뀌는 경우는 301이고, 옛 URL마다 짝이 되는 새 게시물로 보냅니다.
그럼 우리 사이트에는 어떤 순서로 고르나요?
- 바꾸려는 URL마다 이 변경을 되돌릴 일이 있는지 적습니다. 없으면 영구, 있으면 임시입니다.
- 영구면 서버 측 301을, 임시면 302를 기본으로 둡니다.
- 문의·주문처럼 POST 요청을 받는 URL이면 영구는 308, 임시는 307로 바꿉니다.
- 서버 설정을 바꿀 수 없으면 제작 도구의 리디렉션 기능부터 찾고, 그다음 meta refresh 0초를 씁니다.
- 건 뒤에는 상태 코드와 최종 URL을 직접 확인합니다. 순서는 「리다이렉트 확인 방법」 편에, 도메인을 옮길 때의 순서는 「도메인 변경 리다이렉트」 편에 자세히 적었습니다.
조사 방법
- Google Search Central 「Redirects and Google Search」 (문서 수정일 2026-04-14) · 최종 확인일 2026-10-25 · https://developers.google.com/search/docs/crawling-indexing/301-redirects
- Google Crawling Infrastructure 「How HTTP status codes affect Google's crawlers」 (문서 수정일 2026-02-04) · 최종 확인일 2026-10-25 · https://developers.google.com/crawling/docs/troubleshooting/http-status-codes
- 네이버 서치어드바이저 「웹 페이지의 이동」 · 최종 확인일 2026-10-25 · https://searchadvisor.naver.com/guide/seo-basic-redirect
- IETF 「RFC 9110 HTTP Semantics」 (문서 수정일 2022-06) · 최종 확인일 2026-10-25 · https://www.rfc-editor.org/rfc/rfc9110
- curl 「curl man page」 · 최종 확인일 2026-10-25 · https://curl.se/docs/manpage.html
- 영구 6가지·임시 5가지는 「Redirects and Google Search」의 「Redirect types」 표에서 Permanent·Temporary 칸에 적힌 줄 수입니다.
- 상황별 선택 기준 9가지는 위 문서들이 리디렉션 종류마다 적은 쓰임을 상황 단위로 묶은 것입니다. 묶는 방식은 편집 판단입니다.
- 예시 ①②③은 이해를 돕기 위해 만든 가상 상황이며, 실제 기업·기관의 사례가 아닙니다.
- 원문은 영어판(hl=en)이고, 도구·보고서 이름은 같은 문서 한국어판(hl=ko) 표기를 따랐습니다. 네이버 가이드는 페이지에 수정일이 없습니다.