PHP の header() 関数と HTTP レスポンスコード

ちょっとハマったのでメモを残しておきます。

PHP の header() 関数では 第 3 引数で HTTP レスポンスコードを指定することができます。

ところが次のように第 1 引数に NULL や空文字を指定すると HTTP レスポンスコードが設定されませんでした。

header(NULL, TRUE, 404); 
header('', TRUE, 404); 

次のようなレスポンスが返ります。

HTTP/1.1 200 OK
Date: Sun, 11 Sep 2011 02:58:13 GMT
Server: Apache/2.2.14 (Ubuntu) 

404 を期待しているのに 200 になってしまいます。

次のように、何か文字列を指定すれば 404 を返してくれます。

header('xxxx', TRUE, 404); 
HTTP/1.1 404 Not Found
Date: Sun, 11 Sep 2011 02:59:47 GMT 
Server: Apache/2.2.14 (Ubuntu) 

Google サイト内検索

Amazonアソシエイト