次のように、このページが禁止されていることをブラウザに通知するヘッダーを送信できることを知っています。
header('HTTP/1.0 403 Forbidden');
しかし、このタイプのエラーに対してサーバー上に作成されたカスタムエラーページを表示するにはどうすればよいですか?
デフォルトでは、ヘッダーを送信するだけで白いページが表示されますが、しばらく前に読んだときに、カスタマーエラーページを使用できることを覚えています。誰か知っていますか?
次のように、このページが禁止されていることをブラウザに通知するヘッダーを送信できることを知っています。
header('HTTP/1.0 403 Forbidden');
しかし、このタイプのエラーに対してサーバー上に作成されたカスタムエラーページを表示するにはどうすればよいですか?
デフォルトでは、ヘッダーを送信するだけで白いページが表示されますが、しばらく前に読んだときに、カスタマーエラーページを使用できることを覚えています。誰か知っていますか?
ヘッダーを送信した後、コンテンツをエコーするだけです。
header('HTTP/1.0 403 Forbidden');
echo 'You are forbidden!';
http_response_codeはPHP5.4で導入され、作業がはるかに簡単になりました。
http_response_code(403);
die('Forbidden');
ヘッダーを変更した後、カスタムエラーページを含めます。
このためには、最初にブラウザに対して、ユーザーがエラー403を受け取ることを伝える必要があります。これには、次のコードを使用できます。
header("HTTP/1.1 403 Forbidden" );
次に、スクリプトは「エラー、エラー、エラー、エラー、エラー.......」を送信するため、停止する必要があります。使用できます
exit;
この2行で、サーバーはエラーを送信し、スクリプトを停止します。
エラーをエミュレートすることを忘れないでください。ただし、.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または他のサーバーで構成されたHTTP403の通常の動作は次のようになります。
私はここですべての答えを読みましたが、私の状況に対する完全な答えはありませんでした(これはこの質問でもまったく同じです)ので、提案された答えのいくつかの部分を集めて正確な解決策を考え出す方法は次のとおりです:
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の最新の訪問者に確認して確認したところ、正確な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内でErrorDocumentがすでに定義されているシナリオがあり、phpを介して4xxステータスコードを手動で送信するときにこれらのページを表示させたいとのことです。
残念ながら、これは一般的な方法では不可能です。phpはヘッダーをユーザーのブラウザに直接送信するのに対し(Apache Webサーバーには送信しない)、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>