[http] HTTP 리디렉션 : 301 (영구) vs. 302 (임시)

클라이언트가 다르게 행동해야합니까? 어떻게?



답변

상태 301은 리소스 (페이지)가 새 위치로 영구적으로 이동되었음을 의미합니다. 클라이언트 / 브라우저는 원래 위치를 요청하지 말고 지금부터 새 위치를 사용해야합니다.

상태 302는 리소스가 일시적으로 다른 곳에 위치하고 클라이언트 / 브라우저가 계속 원래 URL을 요청해야 함을 의미합니다.


답변

검색 엔진 스파이더는 웹 페이지의 응답 헤더에서 301 상태 코드를 찾으면이 웹 페이지가 더 이상 존재하지 않음을 이해하고 응답으로 위치 헤더를 검색하여 새 URL을 선택하고 색인 된 URL을 새 URL로 바꾸고 페이지 순위를 전송합니다. .

따라서 검색 엔진은 더 이상 존재하지 않는 모든 색인화 된 URL (301 발견)을 새 URL로 새로 고칩니다. 그러면 기존 웹 페이지 트래픽이 유지되고 페이지 순위가 변경되어 새 웹 페이지로 전환됩니다 (이전 웹 페이지의 트래픽을 잃지 않습니다).

브라우저 : 브라우저가 301 상태 코드를 찾으면 이전 URL과 새 URL의 매핑을 캐시하고 클라이언트 / 브라우저는 원래 위치를 요청하지 않고 캐시가 지워지지 않는 한 지금부터 새 위치를 사용합니다.

여기에 이미지 설명을 입력하십시오

검색 엔진 스파이더는 웹 페이지의 302 상태를 찾으면 일시적으로 새 위치로 리디렉션하고 두 페이지를 크롤링합니다. 기존 웹 페이지 URL은 여전히 ​​검색 엔진 데이터베이스에 존재하며 항상 이전 위치를 요청하고 크롤링하려고합니다. 클라이언트 / 브라우저는 여전히 원래 위치를 요청하려고 시도합니다.

여기에 이미지 설명을 입력하십시오

– asp.net C #에서 그것을 구현하고 검색 엔진에 미치는 영향은 무엇인가하는 방법에 대한 자세한 정보를 참조
http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html


답변

크롤러가이를 고려하여 301을 사용할 때 PageRank를 전송하기 때문에 대부분 301 대 302는 검색 엔진에서 색인을 생성하는 데 중요합니다.

자세한 내용은 Peter Lee의 답변 을 참조하십시오.


답변

301은 요청 된 리소스에 새로운 영구 URI가 할당되었으며이 리소스에 대한 향후 참조는 반환 된 URI 중 하나를 사용하여 수행해야한다는 것입니다.

302는 요청 된 자원이 일시적으로 다른 URI에 상주한다는 것입니다.

경우에 따라 리디렉션이 변경 될 수 있으므로 클라이언트는 향후 요청에 계속 Request-URI를 사용해야합니다.

이 응답은 Cache-Control 또는 Expires 헤더 필드로 표시된 경우에만 캐시 할 수 있습니다.


답변

301 리디렉션은 (적어도 일부 브라우저에서) 무한정 캐시됩니다 .

즉, 301을 설정하면 해당 페이지를 방문하면 리디렉션 될뿐만 아니라 리디렉션이 캐시됩니다.

해당 페이지를 다시 방문하면 브라우저 *가 해당 URL을 요청하지 않아도 캐시 된 리디렉션 대상으로 이동합니다.

캐시에서 해당 리디렉션이있는 방문자에 대해 301을 취소하는 유일한 방법은 원래 URL로 다시 리디렉션하는 것입니다 **. 이 경우 브라우저는 루프를 확인하고 입력 된 URL을 실제로 요청합니다.

페이스 북이나 당신이 완전히 통제 할 수없는 다른 리소스로 301을 결정했다면 분명히 옵션이 아닙니다.

불행히도, 많은 호스팅 제공 업체는 관리 인터페이스에 간단히 “리디렉션”이라고하는 기능을 제공합니다. 이 기능을 사용하여 도메인을 페이스 북으로 일시적으로 리디렉션하는 경우 기본적으로 문제가 있습니다.

* 브라우저가 HTTP 301얼마나 오래 캐시합니까? . Chrome 45를 사용하여 방금 시도해 보았습니다. 편집 : Mac의 Safari 7.0.6도 캐시로 브라우저를 다시 시작해도 도움이되지 않습니다 (Link는 Windows의 Safari 5에서는 도움이된다고 말합니다).

** window.location = ''대부분의 경우에 적용 할 수있는 솔루션이기 때문에 javascript을 시도했지만 작동하지 않습니다. 감지되지 않은 무한 루프가 발생합니다. 그러나 PHP header('Location: new.url')는 루프를 깰

결론 : 해당 URL을 다시 사용하지 않을 것이라고 확신하는 경우 301 만 사용하십시오. 일반적으로 루트 디렉토리 (example.com/)에는 존재하지 않습니다.


답변

301의 주요 문제는 서버 수준에서 리디렉션을 비활성화 한 경우에도 브라우저가 리디렉션을 캐시한다는 것입니다.

짧은 유지 관리 기간 동안 리디렉션을 활성화 할 경우 항상 302를 사용하는 것이 좋습니다.


답변