このページが次のように禁止されていることをブラウザに伝えるヘッダーを送信できることを知っています。
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;
この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または他のサーバーで構成されたHTTP 403の通常の動作が続きます。
.htaccess
ErrorDocument 403 /403.html
私はここですべての答えを読みましたが、私の状況に対する完全な答えではありませんでした(この質問ではまったく同じです)ので、提案された答えの一部を集めて正確な解決策を考え出す方法は次のとおりです:
以下のコードをエコーbeforeHTML出力またはヘッダー! (空白であっても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エラーが発生します。
Apache confまたは.htaccess内でErrorDocumentが既に定義されているシナリオがあり、php経由で4xxステータスコードを手動で送信するときにこれらのページを表示したいことを理解しています。
残念ながら、これは一般的な方法では不可能です。なぜなら、phpはヘッダーをユーザーのブラウザー(Apache Webサーバーではなく)に直接送信するのに対し、ErrorDocumentはApacheから生成されたhttpステータスの表示ハンドラーだからです。