HTTP 418 I'm a Teapot(私はティーポットです)
HTTP 418の物語――ウェブで最も愛されているエイプリルフールのHTCPCPステータスコードと、Googleが418に遭遇したときに実際に起きること、そして実ページに対してWAFが418を返すことが問題になる理由を解説します。
このページには証拠シグナルが1件あります
- 関連するライブツールHTTP Status & Redirect Checker
HTTP 418 I'm a teapotは、1998年のエイプリルフールRFCであるHTCPCPのRFC 2324に由来するジョークのステータスコードです。ティーポットにコーヒーを淹れさせようとしても、ティーポットなので拒否しなければなりません。通常のHTTPアプリケーションの意味論を持つことはありませんが、「未割り当て」ではありません。RFC 9110はこのコードを正式に予約しており、IANAのレジストリでは通常の再利用ができない (Unused) と記載されています。2017年にこのコードを取り戻そうとした試みは、「save 418」キャンペーンに敗れました。Googleの2023年時点のガイダンスでは、418はSearchにおいて429以外の4xxと同様に扱われます。現在の一般的なクローラー・ステータスページでは、このような特殊なコードは対象外です。実務上重要なのは、WAFやボット対策レイヤーがリクエストをブロックするために418を使う場合があり、誤ってGooglebotにも返す可能性がある点です。ほかの4xxと同じように監査してください。このサイトの /coffee URLは、RFCに従って本物の418を返します。
この主張の根拠 RFC 2324 introduced 418 as an April Fools' status code for a teapot that refuses to brew coffee. 対象範囲: The original 1998 Hyper Text Coffee Pot Control Protocol joke specification. 信頼度: 高 · 検証日: IETF: RFC 2324 §2.3.2 — 418 I'm a teapotTL;DR —
418 I'm a teapotは、ウェブで最も愛されているジョークのステータスコードです。RFC 2324のコーヒーポットに関するエイプリルフールRFCに由来し、通常のHTTPアプリケーションの意味論を持つことはありません――しかし、RFC 9110とIANAのレジストリによれば正式に 予約済み であり、未割り当てではありません。Googleの2023年時点のガイダンスでは、ほかの429以外の4xxと同様に扱われるため、URLはインデックス登録されません。このサイトで試してみてください。/coffee は本物の418を返します――Networkタブを確認しましょう。
418の由来
1998年4月1日、IETFは RFC 2324: Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0) を公開しました。これは、ウェブ経由でコーヒーポットを制御するための、完全に仕様化された風刺的なプロトコルです。その成果には、BREW メソッド、Accept-Additions ヘッダー(milk、syrup、whisky)、そして不朽のステータスコードが含まれます。
この主張の根拠 RFC 2324 introduced 418 as an April Fools' status code for a teapot that refuses to brew coffee. 対象範囲: The original 1998 Hyper Text Coffee Pot Control Protocol joke specification. 信頼度: 高 · 検証日: IETF: RFC 2324 §2.3.2 — 418 I'm a teapot418 I’m a teapot — 「Any attempt to brew coffee with a teapot should result in the error code ‘418 I’m a teapot’. The resulting entity body MAY be short and stout.」 (翻訳)「ティーポットでコーヒーを淹れようとする試みは、エラーコード『418 I’m a teapot』になるべきである。結果のエンティティボディは短くてずんぐりしたものでもよい。」
ジョークのすべてはそこにあります。ティーポット に コーヒー を頼んだのです。ティーポットにはできません。ティーポットだからです。
その16年後、RFC 7168 はお茶を淹れる家電向けにこの発想を再訪しました。これも情報提供型のエイプリルフールRFCで、一時的にコーヒーが切れている 家電と、永久にティーポットである家電を区別するものでした。どちらのRFCも418に通常のHTTPアプリケーションの意味論を与えていません。いずれも、コアHTTPではなく風刺的なプロトコルであるHTCPCPを説明するものです。
なぜ本物のHTTPにならなかったのか
418に通常のHTTPの意味論が割り当てられることはありませんでした――しかし「未割り当て」でもありません。現在のHTTP Semantics仕様である RFC 9110 は、ジョークとして展開されることが多かった点を理由に、このコードを正式に 予約 しています。また、IANA HTTP Status Code Registry はRFC 9110を参照しながら、418を (Unused) と記載しており、通常の再利用はできません。 この主張の根拠 RFC 9110 reserves status code 418, citing how often it has been deployed as a joke, and leaves open the possibility of assigning it a different meaning in the future if circumstances require it. 対象範囲: Current HTTP Semantics reservation; RFC 9110 does not make 418 a normal production status, but does not permanently foreclose future reassignment. 信頼度: 高 · 検証日: IETF: RFC 9110 §15.5.19 — 418 (Unused) 2017年、IETFのHTTPワーキンググループは、このコードを有用な用途に再割り当てできるよう整理することを提案しました。インターネットは 「Save 418」キャンペーン で応じ、予約は維持されました――RFC 9110も、将来必要になれば再割り当てできる余地を残しています。 この主張の根拠 The IANA HTTP Status Code Registry lists 418 as "(Unused)" and references RFC 9110; it is not an unassigned number available for ordinary reuse. 対象範囲: IANA's current registry entry for status code 418. 信頼度: 高 · 検証日: IANA: HTTP Status Code Registry — 418
その予約が実装者を止めることはありませんでした。Goの net/http とPythonの http モジュールは、どちらも名前付きの418定数(StatusTeapot、HTTPStatus.IM_A_TEAPOT)を公開しています。ほかのフレームワークやプラットフォームも、Google独自の google.com/teapot を含め、イースターエッグとして追随しました。 この主張の根拠 Go's net/http and Python's http module both expose a named 418 status constant, showing implementation recognition without requiring servers to emit 418. 対象範囲: Named constants in two mainstream standard libraries; not evidence of a default response. 信頼度: 高 · 検証日: Go: net/http status constants (StatusTeapot) Python docs: http.HTTPStatus.IM_A_TEAPOT 名前付き定数があるからといって、フレームワークがデフォルトで418を返すわけではありません。意味するのは、そのコードが認識されるということであり、割り当てられたHTTPの意味を持つということではありません。
SEOにおける418の意味
特別なことは何もありません――そして、知っておくべきポイントはそこです。Googleはジョークを解釈しません。2023年2月の名称付きSearch Central記事 では、429を除くすべての4xxレスポンスはSearchで同じように扱われると説明されています。つまり、以前にインデックス登録されていたURLは時間の経過とともに削除され、ページのコンテンツは利用されません。 この主張の根拠 Google's Search Central blog states that all 4xx responses except 429 receive the same treatment for Search: content isn't used and previously indexed URLs are removed over time. 対象範囲: Google Search's dated, named statement on 4xx handling (not 418-specific). 信頼度: 高 · 検証日: Google Search Central Blog (Feb 2023): Don't use 403s or 404s for rate limiting これは一般的な4xxに関する説明であり、ティーポット専用のルールではありません――Googleの現在の一般的なクローラー・ステータスページも、418のような特殊なステータスは表の対象外であると明記しています。 この主張の根拠 Google's current generic crawler-status-code page states that exotic statuses such as 418 are not covered by its table. 対象範囲: Scope note limiting Google's generic HTTP-status guidance to common codes. 信頼度: 高 · 検証日: Google: How HTTP status codes affect Google's crawlers 実際には、インデックス登録に関して418は別の429以外の4xxと同じように動作します。ティーポット専用のランキングルール、インデックス削除までの期間、または一般的な説明を超えた復旧保証はありません。
ここで面白さが止まります。WAFやボット対策の設定の中には、418を「ブロックしたリクエスト」のレスポンスとして使うものがあります。 ログで目立ちやすく、見つけやすいという考え方です。そのルールがGooglebotに誤って適用されると、実際のページが418を返し始めます――そして、存在しないページとまったく同じように扱われます。
重要なURLについて、サーバーログやクロールレポートに418が現れたとしても、ステータスコードだけではどのレイヤーが生成したのか分かりません。アプリケーションコード、フレームワークのデフォルト、WAFやボット対策ルール、CDN、オリジンサーバーのいずれも生成でき、レスポンスがクライアントに届くまでに複数のレイヤーを通過することもあります。各レイヤーで設定、レスポンスヘッダー、リクエストパスのログを確認して実際の発生元を特定し、インデックス登録可能なURLに対するほかの望ましくない4xxと同じように修正してください。
次の最小診断手順を使ってください。
- 対象URLの生のステータスとレスポンスヘッダーを取得します。
- 同じリクエストパスと時刻について、アプリケーション、WAF、CDN、オリジンの各ログを比較します。
418を返しているレイヤーを修正し、その後、生のリクエストとクローラーテストを繰り返します。
このサイトにある418
RFCに敬意を表して、このサイトの /coffee はエッジから 実際の418 を、短くずんぐりした形で返します。このページは、そのイースターエッグに正式な説明を与えるため、そしてhttp-status-codesクラスターが人々を実際に笑顔にするステータスコードを扱えるようにするために存在します。
TL;DR — 予期しない
418は、通常とは異なるレイヤーが返した 429 以外の一般的な 4xx として扱います。生の応答を保存し、アプリケーション、WAF、CDN、オリジンのどこが返したかを特定し、重要な URL が本来の状態に戻るまで同じクローラーパスを確認します。
変更前に信号を解釈する
ステータスコードは応答を分類するだけで、それを選んだシステムは示しません。引用された Google の説明では、418 は 429 以外の一般的な 4xx と同様に扱われます。コンテンツはインデックス登録に使われず、登録済み URL も時間とともに削除される可能性があり、ティーポット専用の復旧手順はありません。
1 つの URL から始め、時刻、パス、ステータス、ヘッダー、本文を保存します。user-agent、IP、認証、レート、地域で結果が変わるか確認します。
応答を生成したレイヤーを特定する
公開応答から内側へ順に調べます。
- 生のリクエストで再現し、ヘッダーと本文を記録します。
- パスと時刻を CDN、WAF、オリジン、フレームワーク、アプリケーションのログで照合します。
- ブラウザーとクローラーを比較します。エラーページの文面だけでは発生元を証明できません。
- 発生元と確認できたルールまたはコードだけを変更します。名前付き定数があっても、既定で 418 を返す証拠にはなりません。
復旧を検証する
失敗した経路で同じ URL を再テストします。実際に必要な状態、通常は公開中でインデックス可能なページなら 200 になるべきです。同じルールの対象となる近接 URL も確認します。
インデックス可能な URL の新しい 418 を監視します。/coffee は意図した 418 の対照として残し、本番ページにその動作を継承させません。
予期しない418を見つけるツール
- Bulk HTTP Status Code Checker: URLの集合をスキャンして418レスポンスを探し、意図したイースターエッグと、WAFやボット対策ルールによってブロックされた実ページを区別します。
- HTTP Header Checker: CDNとセキュリティのヘッダーを調べ、どのレイヤーがレスポンスを生成したかの手がかりを探します。
- ブラウザーのDevTools Networkパネル: 表示されるエラーページのテキストに頼らず、リクエストの生のステータスを確認します。
- curl:
curl -i https://example.com/pathを実行して、ログイン済みのブラウザーセッションなしでステータス、ヘッダー、レスポンスボディを取得します。 - CDN/WAFのセキュリティイベント: インデックス登録されるべきページに418が現れたら、変更する前にリクエスト時刻とURLを、発火したルールと照合します。
418 I'm a teapotは RFC 2324 (HTCPCP) に由来する1998年のエイプリルフールRFCで、ティーポットにコーヒーを淹れるよう求めたことを示します。RFC 7168は2014年に、お茶を淹れる家電向けにこのコードを再訪しました。- 「未割り当て」ではありません。 RFC 9110 は418を正式に 予約 しており、IANAのレジストリでは
(Unused)と記載されています――誰も申請しなかったステータスではなく、インターネットが残すために争ったステータスです。2017年にこのコードを取り戻そうとした試みは、「Save 418」キャンペーンの後に放棄されました。 - GoとPythonはどちらも名前付きの418定数を公開しています。ほかのフレームワークやプラットフォームも、Googleの
google.com/teapotを含め、イースターエッグとして実装しています――ただし、定数があるからといってフレームワークがデフォルトで418を返すわけではありません。 - SEOへの影響: 2023年2月の名称付きGoogle Search Central記事は、429以外のすべての4xxをSearchで同じように扱っています。418を返すURLは、404と同じくインデックス登録されません。Googleの現在の一般的なクローラー・ステータスページでは、418のような特殊なコードは対象外です。
- 実務上のリスク: 予期しない418は、アプリ、フレームワークのデフォルト、WAFやボット対策ルール、CDN、オリジンのいずれからも発生し得ます。修正する前に各レイヤーのヘッダーとログを確認し、発生元を特定してください。
- このサイトは /coffee で本物の418を返します。
変更履歴
2026年8月29日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。
2026年8月8日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。
2026年8月6日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。
2026年7月28日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。
2026年7月17日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。
実際に試す
これはシミュレーションではなく、このサイト上の実際のエンドポイントです。ボタンからアクセスするか、新しいタブで開くか、 curl -i をターミナルで実行すると、サーバーがこの記事で扱う実際のステータスコードを返します。