HTTP ステータスコード 418 I’m a tea pot のページを実装してみた
HTTP ステータスコードとは、ブラウザ等でサーバーにアクセスした時にサーバーから返ってくる応答コードのことである。
HTTP ステータスコードは色々あって、
有名どころでは、200、403、404、500 などがある。
番号 | 英語 | 意味 |
---|---|---|
200 | OK | アクセス成功 |
403 | Forbidden | アクセス禁止 |
404 | Not Found | 見つからなかった |
500 | Internal Server Error | サーバー内部でエラー |
ブラウザでインターネットを閲覧してる人なら一度は見たことがあるだろう。
これらは、大まかな分類では、以下のような数字が割り当てられている。
番号 | 概要 |
---|---|
100番台 | 情報 |
200番台 | 成功 |
300番台 | リダイレクト |
400番台 | クライアントエラー |
500番台 | サーバーエラー |
上表のうち、400番台には 418 I’m a teapot というものがある。
番号 | 英語 | 意味 |
---|---|---|
418 | I’m a teapot | 私はティーポット |
「私はティーポット」とは何か?
418 I’m a teapot というコードは、
「ティーポットにコーヒーを淹れさせようとして、拒否された場合に返すとされる」
というジョークのコードであり、
1998年4月1 のエイプリルフールに作成されたものが、そのまま実装されたコードである。
ジョークコードなので、実用性はほぼ無く見かけることもあまりないが、まれに実装されてることがある。
Google が実装している 418 I’m a teapot
実装されているサイトは、限りなく少ないが、
Google には 418 I’m a teapot のページが存在する。
ちなみに、Google の 418 ページでは、ティーポットをクリックすると、お茶を淹れてくれますw
当ページでも 418 ページを実装してみた
と言うわけで(どういうわけだ?)
当サイトでも、418 I’m a teapot のページを実装してみた。
仕組みは単純に PHP でヘッダーを 418 にして出力してるだけ。
418 のコードは、正確には HTTP の拡張である HTCPCP というプロトコルだが、
HTCPCP/1.0 というのは実装されてないので、プロトコルは HTTP。
$protocol = $_SERVER['SERVER_PROTOCOL'];
if( in_array( $protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0' ) ) === false ) {
$protocol = 'HTTP/1.0';
}
header( "$protocol 418 I'm a teapot" );
このページにアクセスすると、以下のように 418 が返される。
なんで、こんなページ作ったのか? と言うと、
Google Webmasters で「418 I’m a teapot」がどういう扱いになるのかを見てみたかったからw
まぁ、なんとなく予想はできるけど、Google がクロールしてくれたら、また追記します。
ディスカッション
コメント一覧
htmlファイルだけでは実装できないということですか?
Mat さん。
HTTP ヘッダーは HTML を出力する前に送信しなければいけないので、HTML ファイルだけで実装することは 100% 不可能です。
ありがとうございました。
私のサイトでも418を実装したいのですが、どこにどのコードを書いてよいのかわかりません。(私の理解不足です、申し訳ないです。)もう少し初心者にわかりやすく、教えていただけないでしょうか。
Mat さん。
どこにどのコードをと言われてもかなり困ってしまうのですが、この記事で書いている PHP コードであれば HTTP ヘッダーを送信する前としか言えないですね。
当サイトでは WordPress を使用しているので、WordPress のページテンプレートという機能で独自のページテンプレートを作成して、そこに記述してます。
追記まだー?
らるさん。
あー、単純にクロールエラーでインデクス除外ページになってるだけなので、追記するほどでもないかなーと・・・ (;^ω^)