506ステータスコードに関する一般的な説明
HTTPステータスコード506 Variant Also Negotiatesは、サーバがいわゆる透過的なコンテントネゴシエーションを使用する構成で配置されているときに発生する、サーバ内の特定の問題の指標です。
要するに、506 Variant Also Negotiates というステータスコードは、ネゴシエーションの無限ループにつながるサーバーの設定ミスを意味します。サーバはクライアントの好みに基づいて要求されたリソースの特定のバージョンを選択するのではなく、 その選択自体が別のネゴシエーションを参照します。
単純な例ですが、クライアントが特定の言語のウェブページを要求しています。サーバーはウェブサイトの異なる言語バージョンを持っており、最も適したバージョンを選択しようとします。しかし、サーバーのコンフィギュレーションが正しくない場合、最適なバージョンを選択するはずのプロセスは、決定的な選択をする代わりに、別の交渉のラウンドを参照する可能性があります。
実際には、このステータスコードは非常に特殊なサーバ構成とエラー状態を想定しているため、ほとんど見られません。この問題を解決するには、無限ループに入ることなくコンテンツネゴシエーションを正しく実行できるように、サーバーの設定を見直し、修正する必要があります。
HTTPステータスコード506の仕様
出典・引用元はこちら 506 Variant Also Negotiates HTTP Status Code は、8.1 のセクションで規定されています。
PHPで506ステータスコードを投げるには?
WebページでHTTPステータスコード506を投げるには、PHPの関数http_response_codeを使用することができます。構文は次のとおりです: http_response_code(506) (PHP 5 >= 5.4.0, PHP 7, PHP 8)
506 HTTPステータスコードのテスト
クライアント側でHTTPステータスコード(ここでは506 Variant Also Negotiates)などを表示できるようにするためには、F12で開発コンソールを開く必要があります。次に、「ネットワーク」タブに移動します。これでページを開くことができ、ネットワークタブにウェブサイト(例のindex.php)が表示されるはずです。これを選択し、次にHerderセクションを選択する必要があります。すると、ユーザーは次のような結果を見ることができます:
URL: https://http-statuscode.com/errorCodeExample.php?code=506
ステータス: 506 Variant Also Negotiates
それらの: Network
IPアドレス: XX.XX.XX.XX
ステータスコード506のエラーページを自作する方法
Apache Webserver
Webサーバー「Apache」は、インターネット上で最も一般的なWebサーバーの1つです。Apache」で独自の506 Variant Also Negotiatesエラーページを作成するためには、以下のファイルを変更する必要があります。
NGINX Webserver
Webサーバー「Apache」と同様に、「NGINX」もインターネット上で広く利用されています。NGINX」で独自の506 Variant Also Negotiatesエラーページを作成するためには、以下のファイルを変更する必要があります。
location = /506.html {
root /usr/share/nginx/html;
internal;
}
506ステータスコードのブラウザ互換性
Chrome | no data |
Edge | no data |
Firefox | no data |
Opera | no data |
Safari | no data |
Chrome Android | no data |
Firefox for Android | no data |
Opera Android | no data |
Safari on iOS | no data |
Internet | no data |
WebView Android | no data |
プログラミング言語における定数
http.StatusVariantAlsoNegotiates
Response::HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL
:variant_also_negotiates