faviconクローラー向けのルートはGETだけでなくHEADも成功させる
HTTP
Web
favicon
debugging
favicon が外部サービスやディレクトリ表示に反映されないとき、/favicon.ico 自体が 200 でも、クローラーが最初に確認するルート URL の HEAD / や GET / が 4xx/405 を返していると、アイコン発見に失敗することがある。
特に API サーバーや MCP/JSON-RPC など「通常は POST だけを受ける」エンドポイントをドメインルートに置く場合、ブラウザやクローラー向けの通常 GET / と HEAD / には最小 HTML もしくは同等のヘッダーを 200 で返し、アイコン参照タグ(link rel=icon)や apple-touch-icon を発見できるようにする。
判断基準:
GET /は favicon link 付きの最小 HTML を返す。HEAD /も 200 とcontent-type: text/htmlなどの発見に必要なヘッダーを返し、本文は返さない。- プロトコル上意味のある特殊な GET(例: SSE の
Accept: text/event-stream)は既存仕様を維持する。 - 未知パスや本来拒否すべきメソッドまで一律 200 にしない。発見性のための例外はルートとアイコンパスに限定する。
検証方法は、外部 favicon サービスだけを見るのではなく、まずルート(/)への HEAD と GET、および /favicon.ico への HEAD を順に叩き、配信側が 2xx を返すか確認する(curl の -I/-i で確認できる)。外部サービスがまだ古い結果を返す場合は、そのサービスのキャッシュや再クロール待ちとして切り分ける。