[PHP-通信] ステータスコードの送出とリダイレクト
いずれも、header()関数を使用して生のHTTPヘッダを送信する事で実現可能です。
header関数の構文
void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
$string
ヘッダ文字列。 特殊な header コールが 2 種類あります。最初のものは、 文字列 "HTTP/" から始まる全てのヘッダ (大文字・小文字は区別されません) です。 このヘッダは、送信する HTTP ステータスコードを示すために使用されます。 例えば、存在しないファイルへのリクエストを処理するためにある PHP スクリプトを使用するよう (ErrorDocument ディレクティブにより) Apache を設定する場合、 そのスクリプトが正しいステータスコードを返すようにする必要があります。
$replace
ヘッダが 前に送信された類似のヘッダを置換するか、または、同じ形式の二番目の ヘッダを追加するかどうかを指定します。デフォルトでは、この関数は 置換を行ないます。
$http_response_code
HTTP レスポンスコードを強制的に指定の値にします。このパラメータが意味をなすのは string が空文字列でないときだけであることに注意しましょう。
注意:header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があります。
ステータスコードを送出する例1
404 Not Found を送出する例です。
// 404 Not Found header("HTTP/1.1 404 Not Found");
FastCGI の場合のレスポンスは次の形式でなければなりません。
// 404 Not Found header("Status: 404 Not Found");
ステータスコードを送出する例2
第一引数にHTTPを入れればHTTPステータスコードを送出できるらしい。 主要なもののみ。
// 400 Bad Request header('HTTP', true, 400); // 403 Forbidden header('HTTP', true, 403); // 404 Not Found header('HTTP', true, 404); // 500 Internal Server Error header('HTTP', true, 500);
ロケーションヘッダを送出する例
// 301 Moved Permanently header('Location: http://example.com/', true, 301); // 302 Found header('Location: http://example.com/', true, 302); header('Location: http://example.com/'); // 303 See Other header('Location: http://example.com/', true, 303); // 307 Temporary Redirect header('Location: http://example.com/', true, 307);
注意:"Location:" ヘッダはブラウザに REDIRECT (302) ステータスコードを返します (201 や 3xx ステータスコードが既に送信されていない場合にのみ)。
関連リンク
header関数
「PHP」に関する「本」の商品を自動的に表示しています。
キーワードに関連していない商品は、Amazonがオススメする商品です。気になる物があればどうぞ。
キーワードに関連していない商品は、Amazonがオススメする商品です。気になる物があればどうぞ。
作成日:2010年12月06日(Mon)