http-404 응답을 보내지 만 IIS 서버에 설정된 사용자 지정 오류 페이지를 보내지 마십시오. PHP

Adarsh ​​rajput

시나리오를 이해합니다.

:-IIS 8.5에서 웹 애플리케이션에 PHP 사용

:-사용자 지정 오류 페이지는 다음 웹 구성 조각과 함께 404에 대해 설정됩니다.

<httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="/path/404.php" responseMode="ExecuteURL" />
</httpErrors>

:-이것은 존재하지 않는 페이지에서 작동하며 PHP 페이지에서 헤더를 404로 설정하면 IIS 도이 404.php를 반환 header('HTTP/1.0 404 Not Found', true, 404); die;합니다.

질문:

이제 특정 조건에서 일부 php 파일에 404 http 응답 코드를 보내고 싶습니다. 데이터베이스가 0 행을 반환한다고 가정하겠습니다. 위와 같이 헤더를 설정하여 할 수 있지만 사용자 지정 오류 페이지도 반환됩니다. 사용자 지정 오류 페이지를 함께 보내지 않고 404 코드를 보내고 IIS에있는 그대로 응답을 보내도록 지시하는 방법이 있습니까?

문제 :

:-사용자 지정 오류 페이지를 제거 header()하고 die()사이에 콘텐츠를 삽입하면 내 요구 사항을 충족하지만 IIS는 실제로 존재하지 않는 페이지에 사용자 지정 오류를 제공하지 못합니다.

:- location태그를 기반으로 여러 사용자 지정 오류 페이지를 사용할 수없고 제안 된 다른 URL로 리디렉션하고 싶지 않도록 URL 재 작성을 사용하고 있습니다 .

Adarsh ​​rajput

까다로운 솔루션 / 아이디어가 하나 있으므로이를 공유하고 싶습니다. 하지만 더 나은 해결책이 있다면 환영하고 감사합니다.

트릭 / 솔루션 / 아이디어 :

1 단계 :- 기존 php-page에서 session variable바로 전에 설정하고 header('HTTP/1.0 404 Not Found', true, 404);해당 변수에 특정 메시지를 넣습니다 (다른 php-pages에 대한 세션 변수 값으로 다른 정수 코드를 사용하는 것이 좋습니다). 그런 다음 헤더를 설정하고 die(); or exit;.

2 단계 : 이후 IIS 또는 다른 서버가 사용자 지정 오류 페이지를 실행합니다. 그래서 사용자 정의 오류 페이지에서 세션 변수를 확인하고 다음과 같이 내용을 에코합니다 ....

........ 2a-세션 변수가 설정되지 않은 경우 " 메인 메뉴가있는 일반 오류 내용 "등 을 표시 합니다 .

........ 2b-세션 변수가 설정된 경우 값을 확인하고 값에 따라 " 데이터를 찾을 수 없음 메시지 및 검색 패널 " 같이 사용자에게 보여주고 싶은 다른 내용을 표시합니다.

참고 : 사용자 지정 오류 페이지의 코딩에서 다시 404 헤더를 설정해야하며 위의 트릭에서 세션 변수의 값에 따라 다른 오류 코드를 보낼 수도 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관