Redirect Permanen 308

Pelajari bagaimana redirect permanen 308 mempertahankan metode dan body permintaan seperti POST, kapan memilihnya dibanding 301, serta mengapa Google memperlakukan keduanya setara untuk SEO.

Pertama kali diterbitkan: 28 Jun 2026 · Terakhir diperbarui: 22 Agu 2026 · Advanced
Bahasa
1 sinyal bukti di halaman ini

Redirect Permanen 308 sama seperti 301 dalam hal permanensi dan sinyal SEO, tetapi menjamin klien mempertahankan metode permintaan—serta body pada klien yang patuh—di URL baru. Gunakan 308 untuk API, webhook, formulir, atau POST non-GET lain yang harus tiba utuh; gunakan 301 untuk perpindahan halaman GET biasa. Google dan Bing memperlakukan keduanya setara untuk SEO. Dukungan browser luas, tetapi pastikan server, CDN, plugin, atau proxy Anda benar-benar dapat mengirim 308 dan ingat bahwa redirect ini dapat di-cache secara heuristik. Sebagian lapisan lama hanya menyediakan 301/302/307, jadi periksa dukungan stack sebelum memilih kode.

TL;DR — 308 adalah redirect permanen yang secara ketat mempertahankan metode: sinyal kanonisasinya sama dengan 301 (dokumentasi Google berkata “Equivalent to 301 (terjemahan) “Setara dengan 301”), tetapi klien dijamin tidak mengubah metode di URL baru. Karena klien yang mematuhi spesifikasi mengulangi permintaan yang sama, body ikut terbawa. Kode ini ada karena HTTP sudah memiliki kode sementara yang mempertahankan metode (307) bertahun-tahun sebelum memiliki versi permanen—RFC 7538 (2015) mengisi celah itu, dan RFC 9110 kini menunjuk langsung ke 308 dari definisi 301. Untuk SEO keduanya dapat dipertukarkan (Illyes: Google “menggabungkan” 308 dengan 301; Canel dari Bing mengonfirmasi kesetaraan). Pilih 308 ketika permintaan non-GET harus bertahan: migrasi API/versi, URL webhook, atau alur POST autentikasi/formulir—namun verifikasi pelestarian metode dan body pada klien Anda sendiri. Selain itu, 301 tetap default; dukungan browser untuk 308 kuat pada 2026 (caniuse sekitar 96,5%+), tetapi RFC 9110 masih menyebutnya lebih muda dan belum dikenali di semua tempat, sementara sebagian plugin CMS, UI aturan edge, dan proxy lama hanya menyediakan 301/302/307.

Arti 308 secara mekanis

308 Permanent Redirect membawa pesan yang sama dengan 301—resource ini sekarang berada di URL baru secara permanen—dengan tambahan yang tidak pernah dijamin 301: klien tidak boleh mengubah metode permintaan di target. Karena klien mengulangi permintaan yang sama, bukan mengirim permintaan baru, body ikut terbawa pada klien yang mematuhi spesifikasi. Itu konsekuensi jaminan metode, bukan janji terpisah yang tersertifikasi; verifikasi end-to-end pada klien dan server Anda, jangan menganggapnya otomatis. MDN menjelaskan 308 sebagai kode yang mempertahankan metode (dan dalam praktiknya body) tanpa perubahan di seluruh redirect, sedangkan 301 mungkin tidak.

Versi bahasa sederhana yang saya gunakan dalam panduan redirect Ahrefs: “A 308 redirect is the same as a 301 redirect, except it retains the HTTP method of the original request, GET or POST, when performing the redirect.” (terjemahan) “Redirect 308 sama dengan redirect 301, kecuali mempertahankan metode HTTP dari permintaan asli, GET atau POST, saat menjalankan redirect.” Atau versi lebih singkat di panduan kode status HTTP: “308 Permanent Redirect – Has the same functionality as a 301 redirect, except you can’t switch between POST and GET.” (terjemahan) “308 Permanent Redirect memiliki fungsi yang sama dengan 301, tetapi Anda tidak dapat berpindah antara POST dan GET.” Evidence for this claim RFC 7538 defines 308 Permanent Redirect as a permanent move whose redirect follow-up must not change the request method. Scope: HTTP semantics for 308 responses. Confidence: high · Verified: IETF: RFC 7538 §3 — 308 Permanent Redirect

Berikut perbedaannya secara konkret. Misalkan klien mengirim POST pesanan ke /api/orders dengan body JSON:

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

{ "sku": "A-100", "qty": 2 }

Jika endpoint itu menjawab 301 dan klien mengikuti kelonggaran lama “you may switch to GET” (terjemahan) “Anda boleh beralih ke GET”, permintaan dapat tiba di URL baru sebagai GET kosong—body hilang, pesanan ikut hilang. Dengan 308, klien harus mengulangi POST di URL baru; klien yang patuh membawa body, sehingga pesanan berhasil—konfirmasikan pada log klien dan server Anda (lihat tab Scripts), jangan menganggapnya universal. Itulah perbedaan praktisnya: perbedaan ini baru terlihat ketika permintaan asli bukan GET biasa.

Mengapa 308 ada—sejarah spesifikasinya

Inilah bagian yang sering dilewati penjelas lain, dan cara paling jelas memahami kode ini.

307 muncul lebih dulu. HTTP sudah memiliki redirect sementara yang mempertahankan metode—307—jauh sebelum memiliki padanan permanen. Spesifikasi inti awal (RFC 7231) tidak pernah mendefinisikan pasangan permanen untuk 307. Jadi ada kode sementara “pertahankan metode” dan kode permanen “boleh mengubah metode” (301), tetapi belum ada kode permanen “pertahankan metode”.

RFC 7538 mengisi celah. 308 ditambahkan khusus sebagai 307 permanen yang hilang—mula-mula sebagai RFC 7238 eksperimental (Juni 2014), lalu distandardisasi sebagai RFC 7538 (April 2015). Ini penutup lubang nyata, bukan pengganti 301.

Spesifikasi terkini menunjuk langsung ke sana. RFC 9110, spesifikasi semantik HTTP saat ini, masih mendokumentasikan ambiguitas bawaan 301—lalu menyebut 308 sebagai perbaikannya di dalam definisi 301: user agent “MAY change the request method from POST to GET for the subsequent request… If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead.” (terjemahan) “BOLEH mengubah metode permintaan dari POST ke GET untuk permintaan berikutnya… Jika perilaku ini tidak diinginkan, kode status 308 (Permanent Redirect) dapat digunakan.” Kalimat itu menjelaskan seluruh alasan 308 ada, langsung dari spesifikasi. Dalam bagian 308 sendiri, RFC 9110 menambahkan catatan jujur bahwa kode ini “is much younger (June 2014) than its sibling codes and thus might not be recognized everywhere.” (terjemahan) “jauh lebih muda (Juni 2014) daripada kode saudaranya sehingga mungkin tidak dikenali di semua tempat.”

Jadi perilaku POST-ke-GET pada 301 bukan bug; itu kelonggaran yang didokumentasikan “for historical reasons” (terjemahan) “karena alasan historis” di dalam spesifikasi. 308 adalah cara resmi untuk tidak ikut dalam perilaku tersebut.

301 vs 308—perbedaan praktis dalam satu tabel

Permintaan GET biasaPOST/PUT/DELETE dengan body
301Berperilaku identik dengan 308May diturunkan ke GET; body dapat hilang
308Berperilaku identik dengan 301Metode dan body dijamin diulangi
SEO signalSama (permanen, dikonsolidasikan)Sama (permanen, dikonsolidasikan)

Intinya: untuk sebagian besar redirect—yang merupakan GET biasa—301 dan 308 melakukan hal yang sama persis. Jaminan 308 baru berguna ketika metode non-GET dengan body terlibat. (Untuk perbandingan lengkap, lihat artikel khusus perbandingan 301-vs-308.)

Apakah Google memperlakukan 308 sama dengan 301 untuk SEO?

Ya, tanpa ambiguitas, dan hal itu terdokumentasi. Dokumentasi kode status HTTP Google mencantumkan 301 sebagai redirect yang Google “use[s]… as a strong signal that the redirect target should be processed,” (terjemahan) “digunakan sebagai sinyal kuat bahwa target redirect harus diproses”, dan mencantumkan 308 sebagai “Equivalent to 301.” (terjemahan) “Setara dengan 301.” Google menambahkan catatan: “While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (terjemahan) “Walaupun Google memperlakukan kode ini sama, keduanya berbeda secara semantik; gunakan kode yang tepat agar klien lain dapat memperoleh manfaat.” Artinya, Google tidak menghukum pilihan Anda, tetapi perangkat lunak lain tetap bergantung pada perbedaan tersebut.

Evidence for this claim Google treats 308 as equivalent to 301 for Search and groups both as permanent redirects. Scope: Google Search processing; the two status codes remain semantically different for HTTP clients. Confidence: high · Verified: Google: HTTP status codes and Search Google: Redirects and Google Search

Dokumentasi redirect Google menempatkan kedua kode dalam tingkat rekomendasi yang sama: “The 301 and 308 status codes mean that a page has permanently moved to a new location.” (terjemahan) “Kode status 301 dan 308 berarti halaman telah berpindah permanen ke lokasi baru.” Panduan perpindahan situs juga secara eksplisit menyarankan redirect HTTP permanen “such as 301 and 308” (terjemahan) “seperti 301 dan 308”.

Perlu diketahui: kesetaraan ini tidak selalu terdokumentasi. Gary Illyes mengatakan Google menggabungkan 308 ke 301, dan liputan Search Engine Roundtable menyebut masuknya pernyataan itu ke dokumentasi resmi sebagai saat keterangan informal berubah menjadi sesuatu yang dapat diandalkan. Pemilik situs yang dulu bertanya “apakah ini benar-benar terdokumentasi?” memang wajar berhati-hati. Untuk kata-kata persis Google dan para perwakilannya, tab Quotes berisi kutipan terverifikasi dan tautan mendalam.

Apakah Bing memperlakukan 308 sama dengan 301?

Ya. Bing tidak memiliki halaman dokumentasi khusus yang menjelaskan 308 seperti Google, tetapi Fabrice Canel dari Microsoft mengonfirmasinya langsung di X pada September 2024, seperti dilaporkan Search Engine Roundtable: Bing memperlakukan redirect 308 sama seperti redirect 301. Itulah pernyataan Bing yang paling berwenang; lihat tab Quotes untuk baris verbatimnya.

Kapan sebenarnya memakai 308

Di sinilah kasus mandiri untuk 308 berada—dan hampir selalu menyangkut permintaan non-GET.

Endpoint API dan migrasi versi. Memindahkan /v1/ ke /v2/, atau memindahkan host API, adalah contoh klasik. Klien memanggil endpoint ini dengan POST/PUT/PATCH/DELETE dan body nyata. 308 menjamin metode dan payload bertahan selama perpindahan; 301 berisiko menurunkannya diam-diam sehingga permintaan tersangkut.

Migrasi situs yang sarat POST. Alur checkout, endpoint login/autentikasi, dan target aksi formulir semuanya mengirim data dengan POST. Jika URL tersebut berpindah saat migrasi, 308 mempertahankan pengiriman sementara 301 mungkin tidak.

Perubahan URL webhook. Saat layanan lain mengirim POST ke URL webhook yang Anda pindahkan, 308 memberi tahu klien HTTP-nya untuk mengirim ulang POST ke alamat baru dengan body utuh—tepat yang dibutuhkan konsumen webhook.

Benang merahnya: gunakan 308 di mana pun hilangnya body atau perubahan metode diam-diam ke GET akan merusak fungsi, bukan sekadar menggeser sedikit nilai SEO.

Sebelum mengaktifkan salah satu skenario itu, uji sebagai integrasi, bukan hanya memeriksa kode status:

  • Ulangi metode dan payload nyata terhadap salinan staging endpoint baru.
  • Pastikan header otorisasi atau cookie memang harus dibawa, lalu periksa bahwa keduanya benar-benar terbawa.
  • Jika permintaan awal tidak idempoten (misalnya POST yang membuat pesanan), awasi efek samping ganda selama perpindahan.
  • Pastikan query string dan header Content-Type ikut bertahan, bukan hanya body.
  • Verifikasi klien sebenarnya—pengirim webhook, SDK API, atau browser—otomatis mengikuti 308 sebelum endpoint lama dipensiunkan. Tidak semua klien HTTP melakukan ini secara default.

Kapan 301 tetap menjadi default pragmatis

Untuk semua hal yang berupa GET biasa, 301 tetap menjadi default yang masuk akal:

  • Perubahan URL konten atau halaman biasa.
  • Migrasi HTTP → HTTPS.
  • Perubahan domain dan migrasi situs standar.
  • Normalisasi garis miring akhir serta www/non-www.

Di sini permintaannya GET biasa, jadi jaminan 308 tidak memberi manfaat—dan 301 unggul dalam universalitas. Tidak ada biaya SEO untuk salah satunya. Jangan memigrasikan massal 301 yang sudah ada demi kenaikan peringkat; manfaat itu tidak ada. Dalam hierarki preferensi redirect di panduan redirect Ahrefs, 308 dan 301 duduk bersama di tingkat paling atas (di atas meta refresh, JavaScript, dan solusi lain) —keduanya sejajar, bukan tangga.

Catatan adopsi dan dukungan—risiko yang sebenarnya pada 2026

Dukungan browser bukan lagi risiko praktis seperti dahulu. Menurut pelacakan terkini caniuse, 308 memiliki dukungan global sekitar 96,5%+—periksa tabel langsung untuk angka hari ini karena dapat berubah. Celah yang terlihat terkonsentrasi pada browser yang sudah lama mati: sebelum IE11, Chrome/Firefox/Safari kuno, dan Android Browser lama. Jika Anda masih melihat peringatan lama “IE11 gagal pada 308”, peringatan itu sudah kedaluwarsa untuk trafik arus utama.

Perkakas adalah catatan yang lebih relevan sekarang. Pada 2026, tidak semua lapisan menyediakan opsi 308. Sebagian plugin redirect CMS, UI aturan redirect CDN/edge, dan proxy reverse atau load balancer lama masih hanya menyediakan 301/302/307. Sebelum memilih 308, pastikan lapisan yang benar-benar menyajikan redirect dapat mengirimkannya, bukan menurunkannya diam-diam—tab Scripts memiliki perintah satu baris untuk memeriksa kode di kabel. Catatan RFC 9110 bahwa 308 “much younger… might not be recognized everywhere” (terjemahan) “jauh lebih muda… mungkin tidak dikenali di semua tempat” bukan hanya tentang browser; itu adalah peringatan deployment umum. Pada 2026 dampak praktisnya terutama terlihat pada perkakas, bukan browser utama, tetapi catatan tersebut tetap menjadi batas dasar spesifikasi.

Catatan kaki nonstandar: “308 Resume Incomplete”

Satu keunikan yang menunjukkan betapa mudanya kode ini: di dunia nyata 308 bukan hanya kode redirect. API upload Google Drive menggunakan 308 dengan arti yang sama sekali berbeda—“Resume Incomplete” (terjemahan) “Lanjutkan karena belum lengkap”—untuk menandakan upload berpotongan terhenti dan klien harus melanjutkannya. John Mueller menyoroti hal ini (lihat tab Quotes), dan MDN mendokumentasikan penggunaan nonstandar yang sama. Hal itu tidak mengubah 308 sebagai redirect, tetapi menunjukkan bahwa 308 lebih baru dan belum sekokoh 301 yang sudah mapan.

Rantai dan hop redirect berlaku sama untuk keduanya

Tidak satu pun pembahasan di atas mengubah cara kerja rantai redirect. Crawler Google secara default mengikuti hingga 10 hop—itu default, bukan konstanta universal; dokumentasi Google sendiri menyebut produk tertentu dapat berbeda (misalnya URL Inspection tidak mengikuti redirect sama sekali), jadi periksa angka terkini di dokumen Google. Batas default itu sama untuk semua kode redirect permanen yang dibahas di sini. Jika Anda menumpuk redirect (misalnya path API lama melewati dua hop sebelum mendarat), terapkan kebersihan rantai dan loop yang sama—ringkas rantai tersebut menjadi satu lompatan bila memungkinkan. Lihat tulisan khusus tentang rantai redirect untuk mekanismenya.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.