Slate Errors

Server Error

506

Variant Also Negotiates

— バリアントも選択肢に

まずは確認: よくある原因 TOP3

  1. バリアント設定が別のバリアントを指している
    コンテンツネゴシエーションの設定で参照ループが発生
  2. Apache の MultiViews と type-map の組み合わせミス
    古いコンテンツネゴシエーション機能で起きやすい
  3. 動的バリアント生成での循環
    動的に作るバリアントが自分自身を参照している

何が起きたのか?

506 は「サーバー内部のコンテンツの選び分け設定が、循環して終わらなくなっている」というサインです。 教室で言えば、先生 A に質問したら「先生 B に聞いて」と言われ、先生 B のところに行ったら「先生 A に聞いて」と返された——そんな堂々巡りの場面に近いです。

「Transparent Content Negotiation」という古い仕組みに関連するエラーで、現代的な API ではほとんど見かけません。出会ったとしても原因はサーバー側の設定にあり、クライアント側でできることは限られます。

黒板からのひとこと

教室の運営でも、誰が何を担当するかの引き継ぎ表が循環していると、結局誰も対応できなくなります。「これは隣の係に」「いえ、それはこちらの担当ではありません」と、たらい回しになる。先生方は表を引き直して、終端を作ります。

506 もそれと同じで、サーバーは「自分の中で参照が循環していて、結論を出せない」と告白しています。設定ファイルを見直し、参照のループを断ち切るしかありません。

解決への歩み

大丈夫、次はこうしてみよう:

  1. サーバー管理者へ連絡:クライアント側でできることは少ない
  2. 時間を置いて再試行:一時的なデプロイ事故なら短時間で直る可能性
  3. 別のリソースで動作確認:影響範囲が一部か全体かを切り分ける
  4. バリアント設定を修正(管理者向け):type-map ファイル、MultiViews、動的バリアントの参照グラフを点検

実際にはこう見える

$ リクエスト

curl -i https://example.com/some/path

↓ レスポンス

HTTP/1.1 506 Variant Also Negotiates
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<html><body><h1>506 Variant Also Negotiates</h1></body></html>

似ているケース

もっと知りたい