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" );
그러면 스크립트는 "오류, 오류, 오류, 오류, 오류 ......."를 보내므로 중지해야합니다. 당신이 사용할 수있는
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의 정상적인 동작은 다음과 같습니다.
.htaccess
ErrorDocument 403 /403.html
나는 여기에서 모든 답변을 읽었으며 그중 어느 것도 내 상황에 대한 완전한 답변이 아니기 때문에 (이 질문에서 정확히 동일) 여기에 제안 된 답변의 일부를 수집하고 정확한 해결책을 찾는 방법이 있습니다.
- 서버의 실제 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 Visitors를 통해 확인 및 확인했으며 정확한 403 이벤트로 등록되었습니다.
서버의 의무를 최소화하려면 간단하게 만드십시오.
.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 오류가 발생합니다.
아파치 conf 또는 .htaccess 내에 이미 정의 된 ErrorDocument 시나리오가 있으며 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>
Alex, 다음과 같은 헤더를 사용하여 사용자 지정 페이지로 리디렉션 할 수 있습니다.
header('Location: my403page.html');
403 페이지에 원본 헤더 코드를 포함했는지 확인하세요.
header('HTTP/1.0 403 Forbidden');
또는 다음과 같이 헤더를 만들고 403 페이지를 포함 할 수 있습니다.
header('HTTP/1.0 403 Forbidden');
include('my403page.html');
참조 URL : https://stackoverflow.com/questions/5061675/emulate-a-403-error-page
'development' 카테고리의 다른 글
Toad의 대안 (0) | 2021.01.05 |
---|---|
내 iPhone 앱에서 문자열을 날짜로 변환 (0) | 2021.01.05 |
워드 프레스 : 'the_content'필터에 등록 된 모든 기능을 가져 오는 방법 (0) | 2021.01.05 |
Github Ahead / Behind Metrics의 의미 (0) | 2021.01.05 |
MySQL의 문자열에서 알파벳이 아닌 모든 문자를 제거하는 방법은 무엇입니까? (0) | 2021.01.05 |