문제

웹페이지 중 일부는 실제로 내 데이터베이스에 포함되어 있습니다.나는 다음과 같은 htaccess를 가지고 있습니다

ErrorDocument 404 /error404.php

내 오류 404는 다음을 수행합니다. require("checkdb.php");파일 이름이 MySQL db에 표시되는지 확인합니다.그렇다면 200 OK를 돌려주고 내용을 뱉어내고 싶다.안 그러면 그 404를 뱉어내고 싶어

내 문제는 404에 갇혀 있다는 것입니다.내 페이지가 제대로 표시되는 동안 검색 엔진이 페이지를 선택하지 못하고 Google+가 작동하지 않습니다. 페이지를 확인하면 404가 표시되기 때문입니다.

나는 추가했다

header('HTTP/1.1 200 OK'); 

데이터베이스를 확인한 직후(아직 HTML 코드가 표시되지 않음)

경고.헤더 정보를 수정할 수 없습니다. 헤더는 이미 ....에서 전송되었습니다.

그걸 옮겨도 header() 바로 시작 부분에 /error404.php 여전히 해당 오류가 발생합니다.Apache가 먼저 404를 반환한 다음 호출하는 것 같습니다. /error404.php

이 문제를 올바르게 해결하려면 어떻게 해야 합니까?미리 감사드립니다!

도움이 되었습니까?

해결책

Apache가 다음에서 지정한 문서를 보낼 때 ErrorDocument, 일반 페이지로 제공되지 않고 이미 404 헤더를 보냈습니다.대신에 ErrorDocument Apache의 지시어를 사용하는 대신 PHP 스크립트를 사용하여 문서가 존재하는지 먼저 확인하고, 존재하는 경우 표시해야 합니다.존재하지 않으면 PHP는 404 오류 헤더 자체를 보냅니다.

다음은 error404.php에서 발생하지 않고 index.php와 같은 일반 스크립트에서 발생합니다.

// Do whatever you're doing to check
require("checkdb.php");

// If the check fails, PHP sends the 404:
header("HTTP/1.0 404 Not Found");
// Then display your custom error document with PHP
// You can display the other contents of error404.php
echo "Oops, page wasn't found!";
exit();

그리고 제거 ErrorDocument Apache 구성의 지시어입니다.

다른 팁

헤더 줄은 앞에 와야 합니다. 어느 산출.일부 코드가 없으면 출력이 어디서 나오는지 지적할 수 있는 방법이 없습니다.

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