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.
Bahasa
1 sinyal bukti di halaman ini
- Alat aktif terkaitHTTP Status & Redirect Checker
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 Permanent Redirect berarti “berpindah permanen”—persis seperti 301—tetapi dengan janji tambahan: metode permintaan tidak boleh diubah di alamat baru. Karena browser mengulangi permintaan yang sama, bukan membuat permintaan baru, bagian lainnya (termasuk data formulir) biasanya ikut terkirim. Jadi pengiriman formulir tetap menjadi pengiriman formulir, bukan diam-diam berubah menjadi kunjungan halaman biasa. Bagi mesin pencari, kedua kode ini setara; untuk perpindahan halaman biasa, gunakan 301. Pilih 308 ketika yang dialihkan bukan sekadar halaman yang diklik—misalnya API atau formulir—dan permintaan asli harus tiba secara utuh.
Apa sebenarnya 308 itu
Saat server mengirim browser dari satu URL ke URL lain, server memberi respons sebuah angka—kode status. Beberapa angka itu berarti “halaman ini sudah dipindahkan secara permanen”:
- 301 — “Moved Permanently.” Kode pengalihan permanen yang asli dan paling tua; sudah ada sejak web awal.
- 308 — “Permanent Redirect.” Kode yang lebih baru (ditambahkan ke spesifikasi pada 2015) dan melakukan tugas yang sama, ditambah satu jaminan yang tidak diberikan 301.
Jaminan itulah alasan utama 308 ada. Biasanya, saat mengunjungi halaman, browser mengirim permintaan sederhana bernama GET—“tolong berikan halaman ini”. Namun saat mengirim formulir atau masuk, browser mengirim POST, yaitu permintaan yang membawa data (isi yang Anda ketik). Pada 301 gaya lama, browser secara teknis boleh mengubah POST menjadi GET biasa ketika menuju URL baru—biasanya data pun hilang. 308 tidak boleh mengubah metode dengan cara itu. Karena browser mengulangi permintaan yang sama, data biasanya ikut terkirim; tetapi bila hal ini penting untuk API atau alur checkout, jangan hanya percaya pada spesifikasi: uji permintaan nyata dan pastikan body tiba di URL baru.
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 RedirectApakah 308 merugikan SEO?
Tidak. Dokumentasi Google secara harfiah menyebut 308 “Equivalent to 301.” (terjemahan) “Setara dengan 301.” Keduanya adalah redirect permanen dan meneruskan sinyal peringkat halaman ke URL baru dengan cara yang sama. Bing juga memperlakukannya sama. Tidak ada bonus maupun penalti peringkat untuk 308—pilihannya menyangkut perilaku teknis di atas, bukan peringkat pencarian. 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
Jadi, kapan sebaiknya Anda memakai redirect ini?
Untuk halaman biasa yang berpindah—URL baru, perubahan dari http ke https, atau perubahan domain—301 biasa adalah pilihan mudah dan universal. Semua browser, plugin, dan alat hosting memahaminya.
Gunakan 308 secara khusus ketika yang dialihkan bukan halaman biasa:
- API yang dipanggil perangkat lunak lain.
- Formulir atau login yang mengirim data.
- Webhook—URL otomatis yang menerima POST dari layanan lain.
Dalam kasus itu, Anda tidak boleh membiarkan permintaan diturunkan diam-diam dan datanya hilang; 308 menjamin hal tersebut tidak terjadi.
Ingin melihat sejarah spesifikasi, kutipan persis dari Google dan Bing, serta cuplikan server siap salin? Beralihlah ke tab Advanced.
TL;DR — 308 adalah redirect permanen yang secara ketat mempertahankan metode: sinyal kanonisasinya sama dengan 301 (dokumentasi Google berkata “Equivalent to
301” (terjemahan) “Setara dengan301”), 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 biasa | POST/PUT/DELETE dengan body | |
|---|---|---|
| 301 | Berperilaku identik dengan 308 | May diturunkan ke GET; body dapat hilang |
| 308 | Berperilaku identik dengan 301 | Metode dan body dijamin diulangi |
| SEO signal | Sama (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.
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-Typeikut 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.
Ringkasan AI
Ringkasan singkat versi Advanced:
- 308 = permanen + mempertahankan metode secara ketat. Pesannya sama dengan 301, “moved permanently” (terjemahan) “berpindah permanen”, ditambah jaminan yang tidak diberikan 301: klien tidak boleh mengubah metode di URL baru. Klien yang patuh mengulangi permintaan sehingga body ikut terbawa—verifikasi end-to-end pada klien sendiri, jangan hanya mengandalkan spesifikasi.
- Setara SEO dengan 301. Dokumentasi Google menyebut 308 “Equivalent to
301” (terjemahan) “Setara dengan301”; Gary Illyes mengatakan Google menggabungkannya ke 301; Fabrice Canel mengonfirmasi Bing memperlakukannya sama. Tidak ada keuntungan atau penalti peringkat. (Pernyataan Illyes/Mueller/Canel disampaikan melalui Search Engine Roundtable—konfirmasikan sumber asli sebelum menganggapnya final.) - Mengapa ada: HTTP memiliki redirect sementara yang mempertahankan metode (307) bertahun-tahun sebelum memiliki versi permanen. RFC 7538 (2015) mengisi celah itu. RFC 9110 menunjuk 308 dari definisi 301: 301 “MAY change the request method from POST to GET… for historical reasons” (terjemahan) “BOLEH mengubah metode… karena alasan historis”, dan jika perilaku itu tidak diinginkan, 308 dapat digunakan.
- Gunakan 308 untuk: migrasi API/versi, perpindahan URL webhook, serta alur POST formulir/autentikasi—di mana metode atau body yang hilang akan merusak fungsi. Sebelum beralih, ulangi metode dan payload nyata di staging dan pastikan header autentikasi, idempotensi, serta perilaku klien mengikuti redirect.
- Gunakan 301 untuk: perpindahan halaman biasa, HTTP→HTTPS, perubahan domain, dan normalisasi—semuanya GET biasa yang tidak mendapat manfaat dari jaminan 308; 301 lebih universal.
- Adopsi: dukungan browser kuat (caniuse sekitar 96,5%+, celah terutama browser yang sudah mati), tetapi RFC 9110 masih membawa catatan bahwa kode ini lebih muda dan mungkin tidak dikenali di semua tempat. Pada 2026, celah itu terutama pada perkakas (sebagian plugin CMS, UI CDN/edge, dan proxy lama hanya menyediakan 301/302/307). Pastikan lapisan redirect benar-benar mengirim 308, dan ingat 308 dapat di-cache secara heuristik sehingga redirect keliru atau yang dibatalkan dapat bertahan di cache.
- Catatan kaki: Google Drive menggunakan kembali “308 Resume Incomplete” untuk upload yang terhenti—penggunaan non-redirect yang menunjukkan betapa mudanya kode ini.
Dokumentasi resmi
Dokumentasi sumber utama tentang 308 dari mesin pencari dan spesifikasi HTTP.
Google\n- Kode Status HTTP, Kesalahan Jaringan dan DNS, serta Google Penelusuran —mencantumkan 308 sebagai “Equivalent to 301,” (terjemahan) “Setara dengan 301”, catatan bahwa keduanya berbeda secara semantik tetapi diperlakukan sama, serta batas 10 hop redirect.\n- Redirects and Google Search —“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.”\n- Perpindahan situs dengan perubahan URL —merekomendasikan redirect HTTP permanen “such as 301 and 308” (terjemahan) “seperti 301 dan 308” untuk perpindahan permanen.
Spesifikasi HTTP
- RFC 9110 — HTTP Semantics — spesifikasi saat ini. §15.4.9 mendefinisikan 308 (dan catatan “much younger… might not be recognized everywhere” (terjemahan) “lebih muda… mungkin tidak dikenali di semua tempat”); §15.4.2 mendefinisikan 301 dan menunjuk 308 sebagai solusi untuk konversi POST-ke-GET yang tidak diinginkan.
- RFC 7538 — HTTP Status Code 308 (Permanent Redirect) — standar yang memperkenalkan 308 (April 2015) dan menggantikan RFC 7238 eksperimental (Juni 2014).
Referensi
- MDN — 308 Permanent Redirect — semantik pelestarian metode/body dan penggunaan nonstandar Google Drive “Resume Incomplete”.
- caniuse — HTTP status code 308 — tabel dukungan browser (global sekitar 96,5%+).
Kutipan dari sumber
Pernyataan tercatat dari Google, Bing, dan spesifikasi HTTP. Setiap tautan mengarah langsung ke bagian yang dikutip pada halaman sumber.
Google—kesetaraan inti
- “301 (moved permanently) Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.” (terjemahan) “301 (berpindah permanen): Google mengikuti redirect, dan sistem Google menggunakan redirect sebagai sinyal kuat bahwa target redirect harus diproses.” — Dokumentasi Google Search Central. Lompat ke kutipan
- “308 (moved permanently) Equivalent to
301.” (terjemahan) “308 (berpindah permanen): Setara dengan301.” Lompat ke kutipan - “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 status ini sama, keduanya berbeda secara semantik. Gunakan kode yang sesuai agar klien lain dapat memperoleh manfaat.” Lompat ke kutipan
- “The
301and308status codes mean that a page has permanently moved to a new location.” (terjemahan) “Kode status301dan308berarti halaman berpindah permanen ke lokasi baru.” Lompat ke kutipan
Gary Illyes, Google
- Tentang cara Google menangani 308: “we just merge that with 301 so we really don’t care iirc.” (terjemahan) “kami cukup menggabungkannya dengan 301, jadi sebenarnya tidak peduli, kalau saya ingat.” Disampaikan melalui liputan verbatim Search Engine Roundtable, Google Officially Treats 308 Redirects As 301 Redirects (Juli 2021) —konfirmasikan pada sumber asli sebelum menganggapnya final.
John Mueller, Google
- Tentang penggunaan nonstandar: “Google Drive uses a 308 redirect as a Resume Incomplete response to indicate to the client when an incomplete upload stalled. So that is a bit different. But you can use it as a normal redirect.” (terjemahan) “Google Drive memakai redirect 308 sebagai respons Resume Incomplete untuk memberi tahu klien saat upload yang belum lengkap terhenti. Jadi ini agak berbeda, tetapi dapat dipakai sebagai redirect biasa.”\n Disampaikan melalui Search Engine Roundtable, Google Dapat Memperlakukan Redirect 308 seperti Redirect 301 (Mei 2018) —konfirmasikan pada sumber asli sebelum menganggapnya final.
Fabrice Canel, Microsoft Bing
- “I accidentally deleted my reply, so confirming again: Bing treats 308 redirects the same as 301 redirects.” (terjemahan) “Saya tidak sengaja menghapus balasan, jadi saya tegaskan lagi: Bing memperlakukan redirect 308 sama seperti redirect 301.”\n Fabrice Canel di X (September 2024), disampaikan melalui Search Engine Roundtable, Bing Memperlakukan Redirect 308 Sama seperti Redirect 301 —konfirmasikan pada sumber asli sebelum menganggapnya final.
RFC 9110—spesifikasi semantik HTTP
- Mengapa 308 ada, dari definisi 301 dalam spesifikasi: “For historical reasons, a 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) “Karena alasan historis, user agent BOLEH mengubah metode permintaan dari POST ke GET pada permintaan berikutnya. Jika perilaku ini tidak diinginkan, kode status 308 (Permanent Redirect) dapat digunakan.” Baca RFC 9110
- Tentang adopsi: 308 “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.” Baca RFC 9110
Apakah redirect ini sebaiknya 308?
Karena 301 dan 308 setara untuk SEO, ini bukan keputusan peringkat—semuanya bergantung pada satu pertanyaan: apakah ada permintaan non-GET dengan body, dan apakah lapisan redirect Anda benar-benar dapat mengirim 308? Ikuti alurnya.
Should I use a 308 for this redirect?
Versi singkatnya: GET biasa → 301; permintaan non-GET yang harus dipertahankan (dan dapat dikirim oleh stack Anda) → 308. Untuk SEO keduanya dapat dipertukarkan, jadi pertanyaan metode—ditambah pemeriksaan cepat “apakah perkakas saya benar-benar bisa melakukannya”—adalah satu-satunya penentu.
Mitos dan kesalahan tentang 308
Diambil langsung dari mode kegagalan yang paling sering saya lihat.
“308 lebih baik untuk SEO daripada 301.” Salah. Dokumentasi Google menyebut “Equivalent to 301,” (terjemahan) “Setara dengan 301”, dan Illyes, Mueller, serta Canel dari Bing semuanya mengonfirmasi kesetaraan. Tidak ada mesin pencari yang menganggap 308 lebih unggul secara SEO. Pilih 308 demi ketepatan metode/body, bukan keuntungan peringkat.
“You should migrate all your existing 301s to 308s.” (terjemahan) “Anda tidak perlu memigrasikan semua redirect permanen yang sudah ada.” Hanya menambah pekerjaan tanpa keuntungan peringkat. Jika permintaan yang dialihkan adalah GET biasa—sebagian besar redirect halaman-ke-halaman—301 sudah berperilaku identik dalam praktik. Simpan perubahan ke kode permanen yang mempertahankan metode hanya untuk redirect yang benar-benar membawa metode non-GET.
“308 tidak aman karena lebih baru.” Itu berlebihan bila membahas browser: RFC 7538 sudah lebih dari satu dekade, Google dan Bing mengonfirmasi dukungan tingkat mesin, dan caniuse kini menunjukkan dukungan browser sekitar 96,5%+ dengan celah terutama pada versi yang sudah lama mati. RFC 9110 tetap membawa catatan umum “lebih muda, mungkin tidak dikenali di semua tempat”—pada 2026 catatan ini terutama muncul sebagai celah perkakas (tidak semua plugin CMS, UI aturan redirect CDN, atau proxy lama menyediakan opsi 308), bukan celah klien atau mesin pencari.
“301 selalu akan merusak permintaan POST/API saya.” Itu berlebihan. Banyak klien modern mempertahankan perilaku dengan cukup baik; risiko nyata yang didokumentasikan spesifikasi adalah konversi POST-ke-GET yang RFC 9110 izinkan “for historical reasons” (terjemahan) “karena alasan historis”, ketika klien mematuhi kelonggaran lama itu. 308 menghapus risikonya, bukan memperbaiki kegagalan universal yang pasti.
“308 hanya pernah menjadi kode redirect.” Tidak sepenuhnya. “308 Resume Incomplete” nonstandar Google Drive menggunakan kembali kode ini untuk upload yang terhenti—makna yang sepenuhnya berbeda. Ini mengingatkan bahwa penggunaan nyata 308 lebih muda dan belum semapan 301.
Kontras tambahan—“redirect permanen kehilangan PageRank.” Ini bukan topik utama artikel, tetapi layak disebut: panduan Google mengelompokkan 301 dan 308 sebagai redirect permanen yang dipakai sebagai sinyal untuk memproses URL baru sebagai target kanonik—itu menunjukkan kesinambungan, bukan kehilangan nilai. Perlakukan ini sebagai perilaku pemrosesan yang terdokumentasi Google, bukan jaminan menyeluruh bahwa “tidak pernah ada PageRank yang hilang”; framing sinyal kanonik yang lebih sempit itulah yang didukung sumber saat ini.
Konfirmasi dan terapkan 308
Hal paling berguna yang dapat Anda lakukan terhadap 308 adalah memverifikasi kode status nyata di kabel—karena kegagalan paling umum bukan masalah browser, melainkan lapisan perkakas yang diam-diam menurunkan 308 yang Anda inginkan menjadi 301 (atau sama sekali tidak mengirim redirect).
Periksa kode status dengan curl
# Show only the response headers; -I sends a HEAD request.
curl -sI https://example.com/old-path | head -n 1
# → HTTP/1.1 308 Permanent Redirect (what you want)
# → HTTP/1.1 301 Moved Permanently (your layer downgraded it)Untuk memastikan metode benar-benar dipertahankan pada POST (inti dari 308), ikuti redirect dengan -L dan amati apa yang tiba—-X POST plus --data hanya tetap menjadi POST selama hop jika server mengembalikan 308/307:
curl -sIL -X POST --data '{"sku":"A-100"}' \
-H 'Content-Type: application/json' \
https://api.example.com/v1/orders
# Inspect each hop's request line; a 308 keeps it "POST", a 301 may show "GET".Lacak seluruh rantai
Jika path melewati lebih dari satu hop, cetak setiap kode status dalam rantai agar Anda dapat menemukan penurunan atau hop tambahan yang tidak disengaja:
curl -sIL https://example.com/old-path \
| grep -iE '^HTTP/'
# Each line is one hop. Collapse chains to a single hop where you can.Periksa apakah 308 di-cache sebelum mengembalikannya
RFC 9110 membuat 308 dapat di-cache secara heuristik—klien atau perantara boleh menyimpannya meski tidak ada header Cache-Control eksplisit. Artinya, 308 yang keliru (atau yang perlu dibatalkan) dapat terus disajikan dari cache lama setelah aturan origin diperbaiki. Sebelum menyimpulkan redirect “macet”:
- Uji dengan klien baru (mode privat/incognito, tanpa kunjungan sebelumnya) dan klien yang sudah pernah membuka URL lama—perilaku klien yang di-cache dan tidak di-cache dapat berbeda.
- Periksa respons untuk header
Cache-Control,Expires, danAgedengancurl -sI. - Uji GET biasa dan permintaan non-GET yang mewakili secara terpisah; perilaku caching dapat berbeda menurut metode.
- Jika perlu mengembalikan 308, hapus cache edge/CDN secara eksplisit—jangan menganggap menghapus aturan origin sudah cukup, dan perkirakan klien yang telah menyimpan redirect lama tidak akan meminta ulang sendiri.
Konsol Chrome DevTools—periksa redirect dari browser
Tempelkan ini ke Console DevTools (F12 → Console) untuk melihat URL akhir dan status tanpa meninggalkan halaman. Fetch dengan redirect manual melaporkan status respons pertama secara langsung:
// Reports the status of the first response (the redirect itself), not the target.
fetch('https://example.com/old-path', { method: 'HEAD', redirect: 'manual' })
.then(r => console.log('type:', r.type, 'status:', r.status || '(opaqueredirect)'));
// Follow the chain and log where it lands:
fetch('https://example.com/old-path', { method: 'HEAD', redirect: 'follow' })
.then(r => console.log('final URL:', r.url, 'final status:', r.status));Bookmarklet—sekali klik “apa yang dikembalikan URL ini?”
Seret bookmark dengan kode ini sebagai URL-nya, lalu klik di halaman mana pun untuk meminta URL dan menampilkan status akhir serta URL tujuan:
javascript:(function(){var u=prompt('URL to check:',location.href);if(!u)return;fetch(u,{method:'HEAD',redirect:'follow'}).then(function(r){alert('Final status: '+r.status+'\nLanded on: '+r.url);}).catch(function(e){alert('Error: '+e);});})();Terapkan 308 di server
Apache (.htaccess)—mod_rewrite dengan R=308 yang eksplisit:
RewriteEngine On
RewriteRule ^old-path/?$ /new-path [R=308,L]nginx—return 308 tepat dan tidak ambigu:
location = /old-path {
return 308 https://example.com/new-path;
}Express.js (Node)—teruskan kode status ke redirect():
app.all('/api/v1/orders', (req, res) => {
// 308 keeps the POST body intact on the way to /api/v2/orders
res.redirect(308, '/api/v2/orders');
});Next.js—atur permanent: true, dan Next akan mengirim 308 (redirect permanen Next adalah 308):
// next.config.js
module.exports = {
async redirects() {
return [
{ source: '/api/v1/:path*', destination: '/api/v2/:path*', permanent: true },
];
},
};Perilaku framework dan lapisan hosting tidak selalu sama antarversi. Penanganan redirect Next.js, misalnya, dapat berbeda menurut versi dan tempat redirect dipicu—entri redirects() di next.config.js, pemanggilan permanentRedirect() dalam Server Action, atau respons streaming belum tentu menghasilkan kode status yang sama. Hal yang sama berlaku untuk versi modul Apache/nginx serta lapisan CDN atau proxy di depan origin. Perlakukan setiap cuplikan di atas sebagai titik awal, bukan jaminan; konfirmasikan dokumentasi versi Anda yang terbaru.
Setelah menerapkan salah satunya, jalankan kembali pemeriksaan curl -sI di atas untuk memastikan kabel benar-benar membawa 308—langkah verifikasi inilah yang sering dilewati dan kemudian disesali.
Alat untuk mengonfirmasi 308 di kabel
Alat gratis Patrick
- Redirect Checker—telusuri satu URL atau batch singkat dan pastikan respons pertama adalah
308, tujuannya benar, serta rantai berakhir pada respons akhir yang sehat. - Bulk HTTP Status Code Checker—periksa hingga 500 URL yang dimigrasikan, saring respons 301/302/307 yang tidak terduga, dan ekspor rantai atau loop untuk diperbaiki.
Buktikan perilaku ketat saat diperlukan
curldengan payload uji yang aman—ulangi metode nyata terhadap endpoint staging atau endpoint non-destruktif dan ikuti redirect. Pastikan sumber mengirim 308.- Log gateway aplikasi/API—verifikasi target menerima metode, tipe konten, dan body yang sama. Redirect checker membuktikan status dan tujuan; log penerimaan membuktikan pelestarian metode dari ujung ke ujung.
- Panel Network DevTools browser—berguna untuk alur formulir dan autentikasi, tetapi uji klien webhook dan API secara terpisah karena interoperabilitas adalah alasan memilih 308 dibanding 301.
- Google Search Console URL Inspection—untuk URL halaman yang dapat diindeks, pastikan perpindahan permanen diproses seperti 301 dan tujuan dipilih sebagai kanonik.
Uji diri: 308 Permanent Redirect
Lima pertanyaan singkat tentang apa itu 308, mengapa kode ini ada, dan bagaimana mesin pencari memperlakukannya. Pilih jawaban untuk setiap pertanyaan, lalu periksa hasilnya.
Sumber yang layak dibaca
Tulisan terkait saya
- 11 Jenis Redirect & Dampaknya bagi SEO (bersama Joshua Hardwick) —definisi 308, framing “untuk SEO keduanya sama, tetapi formulir berbeda”, serta hierarki preferensi redirect yang menempatkan 308 dan 301 di tingkat teratas.
- Kode Status HTTP & Dampaknya bagi SEO —penjelasan bahwa 308 “memiliki fungsi sama dengan 301… kecuali tidak dapat berpindah antara POST dan GET”, dan 308 diperlakukan seperti 301 serta dikonsolidasikan ke depan.
- Migrasi Situs Web Membutuhkan Lebih dari Sekadar Checklist —mengapa saya memilih 301 atau 308 (bukan 302/307) untuk perpindahan permanen.
- Panduan Pemula untuk SEO Teknis —posisi redirect dalam gambaran SEO teknis yang lebih besar.
Dari industri\n- Redirect dan Google Search —panduan redirect resmi Google yang menyebut 301 dan 308 bersama-sama sebagai opsi permanen.\n- Kode Status HTTP, Kesalahan Jaringan dan DNS, serta Google Penelusuran —dokumen yang menyebut 308 “Equivalent to 301” dengan catatan “berbeda secara semantik”.\n- RFC 9110—HTTP Semantics —spesifikasi saat ini; definisi 301 menunjuk 308 sebagai solusi konversi POST-ke-GET yang tidak diinginkan.\n- RFC 7538—HTTP Status Code 308 (Permanent Redirect) —standar yang memperkenalkan 308.\n- MDN—308 Permanent Redirect —semantik metode/body dan catatan “Resume Incomplete” Google Drive.\n- caniuse—HTTP status code 308 —tabel dukungan browser yang membantah mitos “308 rapuh”.\n- Bing Memperlakukan Redirect 308 Sama seperti Redirect 301 (Search Engine Roundtable) —konfirmasi Fabrice Canel pada 2024 tentang Bing.\n- Google Memperlakukan Redirect 308 seperti Redirect 301 (Search Engine Roundtable) —konteks kutipan “we just merge that with 301” (terjemahan) “kami menggabungkannya dengan 301” dari Gary Illyes dan momen dokumentasi “sekarang resmi”.
Log perubahan
Diperbarui 22 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 6 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 6 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 6 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 6 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 6 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 6 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 17 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
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.