質問

現在、PHPスクリプトでは、ユーザーが存在しない、またはそのユーザーに属していないコンテンツにアクセスしようとすると、カスタム404 not foundエラーページにユーザーをリダイレクトします。そのように:

header('Location: http://www.mydomain.com/error/notfound/');
exit;

上記のheader()呼び出しは、デフォルトで302リダイレクトステータスコードを送信することを認識しています。

しかし、理解できないのは、404 not foundステータスコードを送信すべきときです。ユーザーをリダイレクトする前に?または、 / error / notfound / ページを表示する場合

ご協力ありがとうございます!

役に立ちましたか?

解決

次のようにする必要があります。

header("HTTP/1.0 404 Not Found");
include 'error.php';
die();

他のヒント

404エラーをリダイレクトとして実行することは一切ありません。

本当にやりたいことは、404ステータスヘッダーを送信し、現在の出力を404ページの本文に置き換えることです。

これを行うにはさまざまな方法がありますが、それはサイトの構造にかなり依存します。通常、MVCアプリケーションはこれを転送します。例外をスローする他のシステムを見た後、登録された例外ハンドラーが404ページの表示を処理します。

とにかく、大まかな手順は次のとおりです

  1. コンテンツが無効であると判断する
  2. 現在の実行を中断
  3. 出力がある場合は、出力をクリアします。
  4. 404ステータスヘッダーを送信
  5. 404ページのコンテンツを送信します

404とLocation:を一緒に使用することはできません。場所は、一部の応答(201および3xx)に対してのみ有効です

ただし、カスタムHTMLページを404応答の本文として送信できます。

php.netから:

  

2つの特別な場合のヘッダー呼び出しがあります。 1つ目は、文字列" HTTP /"で始まるヘッダーです。 (大文字と小文字は区別されません)。送信するHTTPステータスコードを特定するために使用されます。たとえば、PHPスクリプトを使用して欠落ファイルの要求を処理するようにApacheを構成している場合(ErrorDocumentディレクティブを使用)、スクリプトが適切なステータスコードを生成することを確認できます。

<?php
header("HTTP/1.0 404 Not Found");
?>

http://us.php.net/manual/en/function .header.php

404 HTTPステータスコードを送信する必要があります。ブラウザとクローラーはこれを理解しています。また、サイトの検索フォーム、Soundexリンクなど、何が起こったかを説明するよりわかりやすいエラーページを含めることもできます。

&quot;リダイレクト&quot;および「見つからない」異なる概念です。

どのファイルが見つかりましたか?
http://www.mydomain.com/error/notfound/
または
http://www.mydomain.com/not_exist.html

&quot; http://www.mydomain.com/not_exist.html &quot ;ページには404ヘッダーと「ページが見つかりません」が必要です。内容。

クイックフィックスは次のようになります:

header("HTTP/1.0 404 Not Found");
readfile('http://www.mydomain.com/error/notfound/');
exit;

ただし、これには2つのApacheリクエストが必要で、やや厄介です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top