이것이 일반적인 질문이라는 것을 알고 있지만 이것이 내 로컬 호스트(WAMP)에서 왜 실패하는지 잘 모르겠습니다.
500 오류를 내 로그인 페이지로 리디렉션하고 싶습니다. 나는 다음을 시도했습니다 :
ErrorDocument 500 http://localhost/mysite/login.php
ErrorDocument 500 C:/wamp64/www/mysite/login.php
ErrorDocument 500 mysite/login.php
ErrorDocument 500 login.php
이들 각각은 내 로그인 페이지로 리디렉션하지 못했습니다.
답변1
나는 PHP로 뭔가를 테스트하고 있었습니다. 오류 보고를 비활성화하면 어떻게 되는지 확인하고 싶었습니다. 예상대로 500 오류가 발생했습니다. htaccess를 사용하여 이에 대한 리디렉션을 구성하고 싶습니다.
.htaccess
이를 처리하기 위해 ErrorDocument를 정의할 수 없습니다 .
PHP 자체는 꺼져 있을 때 빈 500 응답을 반환 display_errors
하고 애플리케이션에서 복구할 수 없는 오류가 발생합니다.
이 응답을 사용자 정의/처리하려면 사용자 정의 PHP 오류 핸들러를 정의해야 합니다. https://www.php.net/manual/en/book.errorfunc.php
(그러나 치명적인 사고가 발생하면 주의하세요.구문 분석 오류스크립트에서 오류 핸들러는 여전히 호출되지 않을 것입니다. 하지만 프로덕션 서버에서는 이런 일이 발생해서는 안 됩니다.)
그것에 대한 몇 가지 문서를 지적해 주실 수 있나요?
불행히도 이에 대한 중심 참조 지점이 없습니다. 정말 작동하는 방식이군요...
Apache ErrorDocument는 Apache 자체가 오류 응답을 트리거할 때만 트리거됩니다. (사용자 정의 500 ErrorDocument는 다음에 대해 트리거되지 않지만모두Apache 500 응답과 그 응답이 늦게 정의되면 .htaccess
아마도 전혀 포착하지 못할 것입니다. 이는 서버 구성/가상 호스트에서 정의되어야 합니다.)
PHP가 응답을 보낼 때 Apache ErrorDocument가 트리거되도록 하려면 Apache가 응답을 가로채서 재정의해야 합니다. 이는 발생하지 않습니다. PHP 스크립트에서 404를 보낼 수 있는 것과 같은 방식으로 Apache는 Apache 404 응답을 보내기 위해 이를 가로채지 않습니다.