403 오류 페이지를 에뮬레이트합니다.
다음과 같이 브라우저에 이 페이지가 금지되었음을 알리는 헤더를 보낼 수 있습니다.
header('HTTP/1.0 403 Forbidden');
그러나 이러한 유형의 오류에 대해 서버에 작성된 커스텀에러 페이지를 표시하려면 어떻게 해야 합니까?
기본적으로는 헤더를 보내는 것만으로 화이트 페이지가 표시되지만, 조금 전에 고객님의 에러 페이지를 사용할 수 있다는 것을 알게 되었습니다.아는 사람 있어요?
헤더를 보낸 후 내용을 에코하기만 하면 됩니다.
header('HTTP/1.0 403 Forbidden');
echo 'You are forbidden!';
http_response_code는 PHP 5.4에 도입되어 훨씬 쉬워졌습니다!
http_response_code(403);
die('Forbidden');
헤더를 변경한 후에는 커스텀에러 페이지를 포함합니다.
그러기 위해서는 먼저 브라우저에 대해 사용자가 오류 403을 수신했다고 말해야 합니다.이 경우 다음 코드를 사용할 수 있습니다.
header("HTTP/1.1 403 Forbidden" );
그러면 스크립트가 "error, error, error, error, error......."를 전송하므로 중지해야 합니다.사용할 수 있습니다.
exit;
이 두 줄에서 서버는 오류를 전송하고 스크립트를 중지합니다.
잊지 마세요: 에러를 에뮬레이트 합니다만, 이 에러는 .htaccess 파일로 설정할 필요가 있습니다.
ErrorDocument 403 /error403.php
많은 답변을 보았지만 올바른 답변은 php 매뉴얼에 따라 헤더 함수 호출에 대한 전체 옵션을 제공하는 것입니다.
void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
를 사용하여 호출하는 경우
header('HTTP/1.0 403 Forbidden', true, 403);
Apache 또는 기타 서버에서 설정되는 HTTP 403의 정상적인 동작.
여기서 답을 모두 읽었는데, 그 중 어느 것도 제 상황에 대한 완전한 답변은 아니었습니다(이 질문에서도 마찬가지입니다).그러므로 제안되는 답변의 일부를 수집하고 정확한 해결책을 도출하는 방법은 다음과 같습니다.
- 서버의 실제 403 페이지에 액세스 할 수 있습니다.(서버에서 금지된 URL로 이동하거나 원하는 403 페이지로 이동)
- 마우스 오른쪽 버튼을 클릭하고 '뷰 소스'를 선택합니다.모든 소스를 선택하여 도메인상의 파일에 저장합니다(http://domain.com/403.html).
- 이제 실제 금지된 페이지(또는 php 일부에서 금지된 상황) 예시로 이동합니다.http://domain.com/members/this_is_forbidden.php
HTML 출력 또는 헤더 앞에 이 코드를 에코합니다! (공백으로도 PHP가 HTML/TEXT HTTP 헤더를 전송하여 작동하지 않습니다.)아래 코드는 첫 번째 행이어야 합니다.
<?php header('HTTP/1.0 403 Forbidden'); $contents = file_get_contents('/home/your_account/public_html/domain.com/403.html', TRUE); exit($contents);
이제 당신은 정확한 해결책을 얻었군요.CPANEL Latest Visiters에 확인 및 확인해보니 정확히 403 이벤트로 등록되어 있습니다.
.htaccess(접속)
ErrorDocument 403 /403.html
서버의 부하를 최소한으로 억제하려면 , 다음의 순서를 실행합니다.
.htaccess(접속)
ErrorDocument 403 "Forbidden"
PHP
header('HTTP/1.0 403 Forbidden');
die(); // or your message: die('Forbidden');
ModRewrite 사용:
RewriteRule ^403.html$ - [F]
www 루트에 "403.html"이라는 이름의 빈 문서를 작성하기만 하면 403이 아닌 404 오류가 나타납니다.
Apache conf 또는 .htaccess에 Error Document가 이미 정의되어 있는 시나리오를 알고 있으며, php를 통해 4xx 상태 코드를 수동으로 전송할 때 이러한 페이지가 나타나도록 하고 싶습니다.
안타깝게도 일반적인 메서드에서는 가능하지 않습니다.이는 php가 헤더를 Apache 웹 서버가 아닌 사용자의 브라우저로 직접 보내기 때문입니다. 반면 ErrorDocument는 Apache에서 생성된 http 상태에 대한 디스플레이 핸들러입니다.
403을 전송한 후 페이지를 새로 고칩니다.
<?php
header('HTTP/1.0 403 Forbidden');
?>
<html><head>
<meta http-equiv="refresh" content="0;URL=http://my.error.page">
</head><body></body></html>
언급URL : https://stackoverflow.com/questions/5061675/emulate-a-403-error-page
'source' 카테고리의 다른 글
URL을 완료하기 위한 HttpServletRequest (0) | 2022.11.08 |
---|---|
python 모듈의 argparse 부분에 대한 테스트는 어떻게 작성합니까? (0) | 2022.11.08 |
PHP - 어레이 값의 키 이름 가져오기 (0) | 2022.11.08 |
선택 상자의 모든 옵션을 제거한 다음 하나의 옵션을 추가하고 jQuery를 사용하여 선택하려면 어떻게 해야 합니까? (0) | 2022.11.08 |
데이터베이스 필드를 1씩 늘립니다. (0) | 2022.11.08 |