source

403 오류 페이지를 에뮬레이트합니다.

lovecheck 2022. 11. 8. 21:12
반응형

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의 정상적인 동작.

여기서 답을 모두 읽었는데, 그 중 어느 것도 제 상황에 대한 완전한 답변은 아니었습니다(이 질문에서도 마찬가지입니다).그러므로 제안되는 답변의 일부를 수집하고 정확한 해결책을 도출하는 방법은 다음과 같습니다.

  1. 서버의 실제 403 페이지에 액세스 할 수 있습니다.(서버에서 금지된 URL로 이동하거나 원하는 403 페이지로 이동)
  2. 마우스 오른쪽 버튼을 클릭하고 '뷰 소스'를 선택합니다.모든 소스를 선택하여 도메인상의 파일에 저장합니다(http://domain.com/403.html).
  3. 이제 실제 금지된 페이지(또는 php 일부에서 금지된 상황) 예시로 이동합니다.http://domain.com/members/this_is_forbidden.php
  4. 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

반응형