HTTPQUERY
Bahasa Indonesia

506 Variant Also Negotiates

Penggunaan

Kode status 506 Variant Also Negotiates muncul selama Transparent Content Negotiation, yaitu ketika protokol memilih varian terbaik dari sumber daya tujuan untuk klien ketika tersedia beberapa varian.

Varian adalah versi-versi berbeda dari sumber daya yang bersangkutan. Sebagai contoh, sebuah sumber daya yang tersedia dalam beberapa bahasa memiliki satu varian untuk masing-masing bahasa. Transparent Content Negotiation secara otomatis memilih varian terbaik ketika sebuah permintaan GET atau HEAD dilakukan.

Error 506 berarti varian yang terpilih itu sendiri dikonfigurasi untuk melakukan negosiasi, sehingga menghasilkan perulangan yang kemudian dihentikan oleh server.

Catatan

Protokol ini dideskripsikan sebagai eksperimental pada tahun 1998 dan belum pernah diadopsi secara resmi sebagai standar.

Dampak SEO

Mesin pencari memperlakukan 506 sama seperti error server 5xx lainnya. Kegagalan yang terus-menerus menurunkan laju perayapan dan pada akhirnya menghapus URL terdampak dari indeks.

Contoh

Klien mengirim permintaan GET dengan header Accept. Server mencoba melakukan content negotiation tetapi menemukan bahwa varian yang dipilih juga merujuk pada negosiasi, sehingga menghasilkan error konfigurasi melingkar.

Permintaan

GET /docs HTTP/1.1
Host: example.com
Accept: text/html, application/xhtml+xml

Respons

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

<html>
  <head>
    <title>Variant Also Negotiates</title>
  </head>
  <body>
    <p>Content negotiation for the requested
    resource resulted in a circular reference.</p>
  </body>
</html>

Cara memperbaiki

Penyiapan content negotiation pada server memiliki referensi melingkar: sebuah varian yang terpilih justru dikonfigurasi untuk bernegosiasi lebih lanjut. Putus perulangan tersebut dengan memastikan setiap varian menunjuk ke representasi yang konkret.

Perbaikan khusus Apache:

Perbaikan umum:

Kode status ini bersifat eksperimental dan jarang dijumpai di lingkungan produksi. Sebagian besar aplikasi modern menangani content negotiation di lapisan aplikasi, sehingga sepenuhnya menghindari mekanisme transparent negotiation di tingkat server.

Referensi kode

.NET

HttpStatusCode.VariantAlsoNegotiates

Rust

http::StatusCode::VARIANT_ALSO_NEGOTIATES

Rails

:variant_also_negotiates

Go

http.StatusVariantAlsoNegotiates

Symfony

Response::HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL

Python3.5+

http.HTTPStatus.VARIANT_ALSO_NEGOTIATES

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_VARIANT_ALSO_NEGOTIATES

Angular

@angular/common/http/HttpStatusCode.VariantAlsoNegotiates