문제

현재 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 페이지를 표시합니다.

어쨌든 거친 단계는입니다

  1. 내용이 유효하지 않습니다
  2. 현재 실행에서 벗어나십시오
  3. 출력이 없으면 출력을 제거하십시오.
  4. 404 상태 헤더를 보내십시오
  5. 404 페이지의 내용을 보내십시오

404와 위치 : 함께 사용할 수 없습니다. 위치는 일부 응답에만 유효합니다 (201 및 3xx)

그러나 404 응답의 본문으로 사용자 정의 HTML 페이지를 보낼 수 있습니다.

php.net에서 :

두 개의 특별 케이스 헤더 호출이 있습니다. 첫 번째는 문자열 "http/"(케이스가 중요하지 않음)로 시작하는 헤더이며, 이는 전송할 HTTP 상태 코드를 파악하는 데 사용됩니다. 예를 들어, APACHE가 PHP 스크립트를 사용하여 누락 된 파일에 대한 요청을 처리하도록 구성된 경우 (Errordocument Directive 사용) 스크립트가 적절한 상태 코드를 생성하는지 확인할 수 있습니다.

<?php
header("HTTP/1.0 404 Not Found");
?>

http://us.php.net/manual/en/function.header.php

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 개의 아파치 요청이 필요하며 불쾌합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top