내 .htaccess는 모든 요청 /word_here
을 /page.php?name=word_here
. 그런 다음 PHP 스크립트는 요청 된 페이지가 페이지 배열에 있는지 확인합니다.
그렇지 않은 경우 오류 404를 어떻게 시뮬레이션 할 수 있습니까? 나는이 시도하지만 통해 구성 내 404 페이지가 표시되지 않은 ErrorDocument
에 .htaccess
게재.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
내 오류 404 페이지로 리디렉션하는 것이 잘못되었다고 생각하는 것이 맞습니까?
답변
404 페이지 생성에 대한 최신 답변 (PHP 5.4 이상 기준)은 다음을 사용하는 것입니다 http_response_code
.
<?php
http_response_code(404);
include('my_404.php'); // provide your own HTML for the error page
die();
die()
꼭 필요한 것은 아니지만 정상적인 실행을 계속하지 않도록합니다.
답변
수행중인 작업이 작동하고 브라우저에 404 코드가 수신됩니다. 무엇이 되지 않습니다 할 것은 당신이 예를 들어, 예상 할 수 있다는 “을 (를) 찾을 수 없습니다”페이지를 표시 할 수 있습니다 :
찾을 수 없음
요청한 URL /test.php를이 서버에서 찾을 수 없습니다.
PHP가 404 코드를 반환 할 때 웹 서버가 해당 페이지를 보내지 않기 때문입니다 (적어도 Apache는 그렇지 않습니다). PHP는 모든 자체 출력을 전송합니다. 따라서 유사한 페이지를 원하면 HTML을 직접 보내야합니다. 예 :
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
include("notFound.php");
?>
httpd.conf에 입력하여 자체 404 메시지에 대해 동일한 페이지를 사용하도록 Apache를 구성 할 수 있습니다.
ErrorDocument 404 /notFound.php
답변
이 시도:
<?php
header("HTTP/1.0 404 Not Found");
?>
답변
.htaccess 파일을 통해 사용자 지정 오류 페이지 만들기
1. 404-페이지를 찾을 수 없음
RewriteEngine On
ErrorDocument 404 /404.html
2. 500-내부 서버 오류
RewriteEngine On
ErrorDocument 500 /500.html
3. 403-금지됨
RewriteEngine On
ErrorDocument 403 /403.html
4. 400-잘못된 요청
RewriteEngine On
ErrorDocument 400 /400.html
5. 401-인증 필요
RewriteEngine On
ErrorDocument 401 /401.html
모든 오류를 단일 페이지로 리디렉션 할 수도 있습니다. 처럼
RewriteEngine On
ErrorDocument 404 /404.html
ErrorDocument 500 /404.html
ErrorDocument 403 /404.html
ErrorDocument 400 /404.html
ErrorDocument 401 /401.html
답변
헤더를 보낸 후 die ()를 기억 했습니까? 404 헤더는 처리를 자동으로 중지하지 않으므로 추가 처리가 발생하면 아무 작업도 수행하지 않은 것처럼 보일 수 있습니다.
404 페이지로 리디렉션하는 것은 좋지 않지만 문제없이 콘텐츠를 포함 할 수 있습니다. 이렇게하면 올바른 URL에서 404 상태를 제대로 전송하는 페이지가 있지만 “무엇을 찾고 있습니까?”라는 메시지도 표시됩니다. 인간 독자를위한 페이지.
답변
넣어보십시오
ErrorDocument 404 /(root directory)/(error file)
에서 .htaccess
파일.
오류에 대해이 작업을 수행하되 오류를 404로 대체하십시오.
답변
Drupal 또는 WordPress CMS (및 기타)에서 일부 사용자 지정 PHP 코드가 존재하지 않는 것처럼 보이게하려면 (일부 조건이 충족되지 않는 한) 다음이 CMS의 404 처리기를 인수하여 잘 작동합니다.
<?php
if(condition){
do stuff;
} else {
include('index.php');
}
?>