HTTPQUERY
Bahasa Indonesia

308 Permanent Redirect

Penggunaan

Ketika kode status 308 Permanent Redirect diterima, klien diharapkan memperbarui tautan yang tersimpan ke URI yang baru. URI baru tersebut ditentukan oleh header Location dan digunakan klien untuk melakukan pengalihan otomatis.

Respons ini umum terjadi ketika server bermigrasi ke domain baru atau menata ulang struktur berkas internalnya tanpa rencana untuk kembali ke URI sebelumnya.

Kode status 308 Permanent Redirect berbeda dari 301 dalam satu hal penting: klien diwajibkan mempertahankan metode request aslinya. Respons 301 mengizinkan klien mengubah request POST menjadi request GET saat pengalihan. Sebaliknya, 308 Permanent Redirect mengharuskan request lanjutan menggunakan metode yang sama dengan request asli. Hal ini menjadikan 308 pilihan yang tepat ketika pelestarian metode itu penting, misalnya pada endpoint API dan pengiriman formulir. Kode status 308 awalnya didefinisikan sebagai spesifikasi tersendiri sebelum akhirnya digabungkan ke dalam standar inti HTTP.

Dampak SEO

Google memperlakukan 308 secara identik dengan 301. Keduanya merupakan pengalihan permanen dan menjadi sinyal kuat bahwa target pengalihan adalah URL kanonis. Sinyal peringkat dialihkan dari URL lama ke URL baru. Google mengikuti hingga 10 lompatan pengalihan. Konten dari URL pengalihan perantara diabaikan. Satu-satunya perbedaan antara 301 dan 308 adalah pelestarian metode, yang penting bagi endpoint API tetapi tidak bagi perayapan mesin pencari. Mengalihkan URL yang telah dihapus ke halaman beranda atau halaman kategori generik dengan 308 akan dideteksi oleh Google sebagai soft 404.

Contoh

Klien mengirimkan request POST ke sebuah endpoint API. Server merespons dengan 308 Permanent Redirect untuk menunjukkan bahwa endpoint tersebut telah berpindah. Klien diwajibkan mengulangi request POST itu, termasuk body aslinya, pada Location yang baru.

Permintaan

POST /api/v1/orders HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 35

{"item": "widget", "quantity": 10}

Respons

HTTP/1.1 308 Permanent Redirect
Location: http://example.com/api/v2/orders
Content-Type: text/html; charset=UTF-8
Content-Length: 118

<h1>API endpoint moved</h1>
<body>
The orders endpoint has moved to
<a href=/api/v2/orders>/api/v2/orders</a>.
</body>

Referensi kode

.NET

HttpStatusCode.PermanentRedirect

Rust

http::StatusCode::PERMANENT_REDIRECT

Rails

:permanent_redirect

Go

http.StatusPermanentRedirect

Symfony

Response::HTTP_PERMANENTLY_REDIRECT

Python3.5+

http.HTTPStatus.PERMANENT_REDIRECT

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_PERMANENT_REDIRECT

Angular

@angular/common/http/HttpStatusCode.PermanentRedirect