클라이언트가 다르게 행동해야합니까? 어떻게?
클라이언트가 다르게 행동해야합니까? 어떻게?
답변:
상태 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 헤더 필드로 표시된 경우에만 캐시 할 수 있습니다.
<?php header("location: http://example.com/new.php"); ?>
와 파일 new.php를 사용하여 old.php 파일을 만들고 링크<?php echo 'I am new'; ?>
로 이동 하십시오 . "I am new"텍스트를 리디렉션하고 표시합니다. 그런 다음 old.php의 코드를로 바꾸고 링크<?php echo 'I am old'; ?>
로 이동 하십시오 . "I old"라는 텍스트가 표시됩니다. old.php에서 301 리디렉션을 수행했다면 old.php의 코드가 변경된 후에도 "I am new"라는 텍스트가 표시 될 것입니다.
webcomic.com/latest
리디렉션 webcomic.com/some-comic-title
되면 브라우저는 항상 "some-comic-title"로 리디렉션합니다. 다음 만화가 출판되고 "최신"이 이제 "다른 코믹 타이틀"로 리디렉션 될 때에도 302가 더 나을 것입니다.
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/)에는 존재하지 않습니다.