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