HTTP 상태 코드를 언제 보내야합니까?
-
03-07-2019 - |
문제
현재 PHP 스크립트에서는 사용자가 존재하지 않거나 해당 사용자에게 속하지 않는 콘텐츠에 액세스하려고 할 때 사용자를 사용자 정의 404 찾을 수없는 오류 페이지로 리디렉션합니다. 그렇게 :
header('Location: http://www.mydomain.com/error/notfound/');
exit;
위의 헤더 () 호출은 기본적으로 302 리디렉션 상태 코드를 전송한다는 것을 알고 있습니다.
그러나 내가 이해하지 못하는 것은 404 Found 상태 코드를 보내야 할 때입니다. 사용자를 리디렉션하기 전에? 또는 내가 표시 할 때 /오류/NOTFOUND/ 페이지?
당신의 도움을 주셔서 감사합니다!
해결책
당신은 다음과 같은 일을해야합니다.
header("HTTP/1.0 404 Not Found");
include 'error.php';
die();
다른 팁
404 오류를 리디렉션으로 전혀 실행하지 않습니다.
실제로 원하는 것은 404 상태 헤더를 보내고 현재 출력을 404 페이지의 본문으로 바꾸는 것입니다.
이 작업을 수행하는 다양한 방법이 있으며 사이트가 어떻게 구성되는지에 따라 다릅니다. MVC 애플리케이션은 일반적으로 이것을 전진으로 건네줍니다. 예외를 던지는 다른 시스템을 보았고 등록 된 예외 핸들러는 404 페이지를 표시합니다.
어쨌든 거친 단계는입니다
- 내용이 유효하지 않습니다
- 현재 실행에서 벗어나십시오
- 출력이 없으면 출력을 제거하십시오.
- 404 상태 헤더를 보내십시오
- 404 페이지의 내용을 보내십시오
404와 위치 : 함께 사용할 수 없습니다. 위치는 일부 응답에만 유효합니다 (201 및 3xx)
그러나 404 응답의 본문으로 사용자 정의 HTML 페이지를 보낼 수 있습니다.
php.net에서 :
두 개의 특별 케이스 헤더 호출이 있습니다. 첫 번째는 문자열 "http/"(케이스가 중요하지 않음)로 시작하는 헤더이며, 이는 전송할 HTTP 상태 코드를 파악하는 데 사용됩니다. 예를 들어, APACHE가 PHP 스크립트를 사용하여 누락 된 파일에 대한 요청을 처리하도록 구성된 경우 (Errordocument Directive 사용) 스크립트가 적절한 상태 코드를 생성하는지 확인할 수 있습니다.
<?php
header("HTTP/1.0 404 Not Found");
?>
404 HTTP 상태 코드를 보내야합니다. 브라우저 및 겉옷 이것을 이해하다. 사이트 검색 양식, SoundEx 링크 등을 포함하여 발생한 일을 설명하는보다 친근한 오류 페이지를 포함시킬 수도 있습니다.
"리디렉션"과 "발견되지 않은"은 다른 개념입니다.
어떤 파일을 찾을 수 있습니까?
http://www.mydomain.com/error/notfound/
또는
http://www.mydomain.com/not_exist.html
"http://www.mydomain.com/not_exist.html"페이지에는 404 개의 헤더가 있어야하고"페이지를 찾지 못한 "내용이 있어야합니다.
빠른 문제는 다음과 같습니다.
header("HTTP/1.0 404 Not Found");
readfile('http://www.mydomain.com/error/notfound/');
exit;
그러나 이것은 2 개의 아파치 요청이 필요하며 불쾌합니다.