81

次のように、このページが禁止されていることをブラウザに通知するヘッダーを送信できることを知っています。

header('HTTP/1.0 403 Forbidden');

しかし、このタイプのエラーに対してサーバー上に作成されたカスタムエラーページを表示するにはどうすればよいですか?

デフォルトでは、ヘッダーを送信するだけで白いページが表示されますが、しばらく前に読んだときに、カスタマーエラーページを使用できることを覚えています。誰か知っていますか?

4

11 に答える 11

76

ヘッダーを送信した後、コンテンツをエコーするだけです。

header('HTTP/1.0 403 Forbidden');

echo 'You are forbidden!';

禁断

于 2011-02-21T02:21:33.633 に答える
65

http_response_codeはPHP5.4で導入され、作業がはるかに簡単になりました。

http_response_code(403);
die('Forbidden');
于 2017-04-25T14:44:04.167 に答える
29

ヘッダーを変更した後、カスタムエラーページを含めます。

于 2011-02-21T02:30:30.133 に答える
20

このためには、最初にブラウザに対して、ユーザーがエラー403を受け取ることを伝える必要があります。これには、次のコードを使用できます。

header("HTTP/1.1 403 Forbidden" );

次に、スクリプトは「エラー、エラー、エラー、エラー、エラー.......」を送信するため、停止する必要があります。使用できます

exit;

この2行で、サーバーはエラーを送信し、スクリプトを停止します。

エラーをエミュレートすることを忘れないでください。ただし、.htaccessファイルに設定する必要があります。

ErrorDocument 403 /error403.php
于 2013-04-18T17:26:32.603 に答える
10

多くの答えを見ましたが、正しいのは、phpマニュアルに従ってヘッダー関数呼び出しの完全なオプションを提供することです

void header ( string $string [, bool $replace = true [, int $http_response_code ]] )

で呼び出す場合

header('HTTP/1.0 403 Forbidden', true, 403);

Apacheまたは他のサーバーで構成されたHTTP403の通常の動作は次のようになります。

于 2016-12-11T04:24:30.870 に答える
5

私はここですべての答えを読みましたが、私の状況に対する完全な答えはありませんでした(これはこの質問でもまったく同じです)ので、提案された答えのいくつかの部分を集めて正確な解決策を考え出す方法は次のとおりです:

  1. サーバーの実際の403ページにアクセスします。(サーバー上の禁止されたU​​RLに移動するか、任意の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の最新の訪問者に確認して確認したところ、正確な403イベントとして登録されています。

于 2015-10-06T18:00:46.307 に答える
4

.htaccess

ErrorDocument 403     /403.html
于 2011-02-21T02:31:49.187 に答える
3

サーバーの義務を最小限に抑えるには、次のようにします。

.htaccess

ErrorDocument 403 "Forbidden"

PHP

header('HTTP/1.0 403 Forbidden');

die(); // or your message: die('Forbidden');
于 2014-02-05T21:34:54.470 に答える
2

ModRewriteを使用します。

RewriteRule ^403.html$ - [F]

wwwルートに「403.html」という空白のドキュメントを作成してください。そうしないと、403ではなく404エラーが発生します。

于 2015-02-01T22:46:29.983 に答える
1

Apache confまたは.htaccess内でErrorDocumentがすでに定義されているシナリオがあり、phpを介して4xxステータスコードを手動で送信するときにこれらのページを表示させたいとのことです。

残念ながら、これは一般的な方法では不可能です。phpはヘッダーをユーザーのブラウザに直接送信するのに対し(Apache Webサーバーには送信しない)、ErrorDocumentはApacheから生成されたhttpステータスの表示ハンドラーです。

于 2014-11-27T15:22:35.003 に答える
-1

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>
于 2014-10-12T06:08:09.313 に答える