Redirect 301 vs. 308

301 dan 308 sama-sama pengalihan permanen. Perbedaan utamanya, 308 menjamin metode HTTP beserta body tetap dipertahankan saat lompatan. Pahami alasan 308 dibuat, mengapa Google dan Bing memprosesnya seperti 301, dan kapan kode ini layak dipilih.

Pertama kali diterbitkan: 2 Jul 2026 · Terakhir diperbarui: 6 Agu 2026 · Advanced
Bahasa
1 sinyal bukti di halaman ini

301 dan 308 sama-sama pengalihan permanen, dan Google maupun Bing memproses 308 seperti 301 untuk crawling, pengindeksan, serta konsolidasi sinyal—dokumentasi Google menyebut 308 'setara dengan 301', Gary Illyes berkata 'kami cukup menggabungkannya dengan 301', dan Fabrice Canel dari Bing mengonfirmasi perlakuan yang sama. Pada tingkat protokol, perbedaan utamanya bersifat mekanis: 308 menjamin client mengulang metode permintaan yang sama (POST tetap POST dan body ikut dibawa) ke URL baru, sedangkan 301—kode dari era HTTP/1.0—ambigu khususnya soal POST yang berubah menjadi GET (RFC tidak membahas PUT atau DELETE). Untuk perpindahan halaman atau situs biasa, 301 tetap menjadi default praktis karena lebih lama, lebih dikenal, dan lebih luas didukung tooling/CDN/plugin. Pilih 308 hanya saat metode non-GET harus dipertahankan: endpoint API, URL webhook, target aksi formulir, atau alur POST autentikasi—dan tetap uji client nyata karena kode status saja tidak menjamin kredensial, cookie, maupun idempotensi. Tidak ada keunggulan SEO pada salah satunya; klaim bahwa semua 301 harus dimigrasikan ke 308 demi peringkat adalah mitos yang telah dibantah mesin pencari.

TL;DR — 301 dan 308 sama-sama redirect permanen, dan Google maupun Bing memproses 308 dengan cara yang sama seperti 301 — dokumentasi Google menyebut 308 “equivalent to 301,” (terjemahan) “setara dengan 301,” Illyes berkata “we just merge that with 301,” (terjemahan) “kami menggabungkannya dengan 301,” dan Canel menegaskan bahwa Bing “treats 308 redirects the same as 301 redirects.” (terjemahan) “memperlakukan redirect 308 sama seperti redirect 301.” Pada tingkat protokol, perbedaan utamanya adalah mempertahankan metode: 308 (RFC 7538, 2015) secara mekanis menjamin client mengulang metode yang sama pada URL baru (body ikut terkirim); 301 berasal dari era HTTP/1.0 dan ambigu khususnya soal POST menjadi GET — RFC tidak membahas PUT atau DELETE, jadi jangan menggeneralisasi catatan POST itu. 308 dibuat sebagai saudara permanen dari 307 — RFC 7231 mendefinisikan kode sementara yang mempertahankan metode (307), tetapi belum ada versi permanennya, dan 308 mengisi kekosongan itu. Jadikan 301 default untuk migrasi halaman/situs/HTTPS biasa (lebih lama, lebih dikenal luas, dan dukungan CDN/CMS/plugin lebih baik). Pilih 308 hanya saat harus mempertahankan permintaan non-GET — endpoint API, URL webhook, target aksi formulir, alur POST autentikasi — dan tetap verifikasi kredensial, cookie, serta idempotensi pada client nyata, bukan menganggap kode status sudah menjaminnya. Keduanya tidak “lebih baik untuk SEO” — itu mitos yang sudah dibantah secara eksplisit oleh mesin pencari.

Perbedaan semantik adalah yang utama

Baik 301 maupun 308 menyampaikan hal yang sama kepada mesin pencari soal permanensi: sumber daya telah berpindah secara permanen dan tujuan seharusnya menjadi kanonik. Perbedaannya hanya satu jaminan mekanis yang sempit tentang cara klien mengulangi permintaan.

  • 301 (Moved Permanently). Ini adalah kode pengalihan permanen asli dari era HTTP/1.0. Sejak awal, maknanya ambigu tentang apakah metode permintaan harus dipertahankan. Dalam praktik, browser dan klien lain secara historis mengubah POST menjadi GET saat mengikuti 301—aman untuk halaman biasa, tetapi diam-diam merusak apa pun yang bergantung pada metode atau body permintaan.
  • 308 (Permanent Redirect). Ini adalah versi ketat. Kode ini menjamin klien mengulang metode dan body yang persis sama ke URL baru. POST tetap POST; payload ikut terbawa.

Kalimat satu baris yang bisa saya berikan: 308 adalah 301 yang juga menjamin browser tidak diam-diam mengubah POST menjadi GET. Evidence for this claim RFC 9110 defines both 301 and 308 as permanent redirects; 308 forbids changing the request method, while 301 permits POST-to-GET rewriting for historical reasons. Scope: HTTP semantics for 301 and 308 responses. Confidence: high · Verified: IETF: RFC 9110 §§15.4.2, 15.4.9 IETF: RFC 7538 §3 — 308 Permanent Redirect

Mengapa 308 ada: “307 permanen” yang hilang

Inilah bagian yang hampir tidak pernah dijelaskan, dan cara paling jelas untuk memahami seluruh perbandingan ini. Masalahnya adalah celah dalam spesifikasi.

Kode pengalihan modern tersusun dalam kisi sementara/permanen serta longgar/ketat:

SementaraPermanen
Metode dapat berubah (longgar)302301
Metode dipertahankan (ketat)307308

RFC 7231 mendefinisikan 307—pengalihan sementara yang mempertahankan metode—sebagai pasangan ketat untuk 302 yang longgar dan ambigu. Namun, RFC itu tidak mendefinisikan padanan permanen yang mempertahankan metode. Ada kode sementara yang ketat, tetapi tidak ada kode permanen yang ketat. RFC 7538 (April 2015) menambahkan 308 untuk mengisi celah itu: hubungan 308 terhadap 301 sama seperti 307 terhadap 302. Jika Anda membaca perbandingan 302-vs-307 di klaster ini, 301-vs-308 adalah hubungan yang sama satu baris di atas—permanen-longgar versus permanen-ketat.

301 mendahului seluruh kerangka ini. Kode tersebut berasal dari HTTP/1.0, sebelum konsep “pertahankan metode” diformalkan; itulah sebabnya maknanya ambigu dan mengapa 308 harus dibuat, bukan sekadar diperjelas.

Arti pelestarian metode dan body dalam praktik

Untuk sebagian besar pengalihan—seseorang mengeklik tautan, browser mengirim GET, lalu server mengarahkannya ke tempat lain—tidak ada perbedaan praktis. Browser modern mempertahankan GET pada 301 dengan baik. Perbedaannya baru penting jika permintaan bukan GET biasa:

Jenis permintaanDi balik 301Di balik 308
GET (halaman biasa)Diikuti sebagai GET (dalam praktik, aman)Diikuti sebagai GET
POST (pengiriman formulir, API)Dapat diam-diam diubah menjadi GET, body hilangDiulang sebagai POST, body utuh
PUT / DELETE (API)Tidak didokumentasikan RFC—kelonggaran historis hanya POST→GET, jadi perlakukan sebagai perilaku klien yang spesifik dan belum terverifikasiMetode dipertahankan (aturan mengikuti otomatis 308 tidak khusus untuk POST)

Risiko 301 terutama berkisar pada POST dan body permintaan—formulir, API, webhook, dan alur autentikasi. Pernyataan “A 301 will always break my form” (terjemahan) “301 akan selalu merusak formulir saya” adalah berlebihan; GET biasa aman. Pengecualian historis spesifikasi untuk 301 secara khusus menyangkut POST→GET; spesifikasi tidak mendokumentasikan perilaku PUT atau DELETE, jadi jangan menganggap cara kedua kode menangani metode tersebut tanpa menguji klien yang sebenarnya. Yang jelas dari spesifikasi: 308 melarang klien mengubah metode apa pun yang diulangnya—aturan itu tidak terbatas pada POST. Yang dijamin di sini adalah pelestarian metode; header, cookie, kredensial, atau transaksi yang lebih luas tidak otomatis dijanjikan tetap utuh. Semua itu bergantung pada klien dan integrasi, sehingga layak diuji untuk hal yang penting (lihat daftar periksa di bawah).

Apakah Google memperlakukan 301 dan 308 secara berbeda untuk SEO? Tidak.

Ini pertanyaan redirect yang langka: dokumentasi, para Googler, dan Bing semuanya sepakat—dan telah konsisten selama bertahun-tahun.

Dokumentasi kode status HTTP Google menempatkan 301 dan 308 dalam kelompok yang sama. Baris 301 berbunyi: “Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.” (terjemahan) “Google mengikuti redirect, dan sistem Google menggunakan redirect sebagai sinyal kuat bahwa target redirect harus diproses.” Baris 308 hanya satu baris: “Equivalent to 301.” (terjemahan) “Setara dengan 301.” Itu pernyataan paling kuat dan paling mudah dikutip — dokumentasi Google sendiri secara harfiah menyamakan keduanya. Evidence for this claim Google treats 308 as equivalent to 301 for Search while advising sites to use the semantically appropriate status code. Scope: Google Search processing; client behavior still differs when method preservation matters. Confidence: high · Verified: Google: HTTP status codes and Search

Panduan redirect menegaskannya. Panduan itu dibuka dengan “The 301 and 308 status codes mean that a page has permanently moved to a new location” (terjemahan) “kode status 301 dan 308 berarti sebuah halaman telah dipindahkan secara permanen ke lokasi baru,” lalu tidak membuat pembedaan lebih lanjut di antara keduanya.

Para Googler telah menyampaikan hal yang sama secara informal selama bertahun-tahun, jauh sebelum hal itu ditulis dalam dokumentasi:

  • Gary Illyes (2021): dalam sebuah utas tentang apakah Google memperlakukan 308 seperti 301, ia berkata Google “just merge[s] that with 301 so we really don’t care.” (terjemahan) “kami cukup menggabungkannya dengan 301, jadi kami benar-benar tidak peduli.” Tulisan Barry Schwartz membingkainya sebagai momen ketika hal itu menjadi resmi: “Three years later it was added to the official Google documents that Google treats 308 redirects like 301 redirects — so now it is official.” (terjemahan) “Tiga tahun kemudian, hal itu ditambahkan ke dokumentasi resmi Google yang menyatakan bahwa Google memperlakukan redirect 308 seperti redirect 301—jadi kini sudah resmi.”
  • John Mueller (2018): tiga tahun sebelumnya, ia berkata—“If you use it [a 308 redirect] like a 301 we’ll treat it as such.” (terjemahan) “Jika Anda menggunakan [redirect 308] seperti 301, kami akan memperlakukannya demikian.” Jadi, inilah sikap informal Google sejak lama sebelum dokumentasi menyusul.

Namun, ada satu nuansa penting dalam dokumentasi Google, dan itulah tesis artikel ini. Tepat setelah menyamakan kode, Google menekankan bahwa keduanya berbeda secara semantik: gunakan kode status yang sesuai untuk jenis pengalihan agar client lain (misalnya e-reader dan mesin pencari lain) juga dapat memperoleh manfaat. Dengan kata lain: pilih kode demi ketepatan dan interoperabilitas, bukan SEO — karena SEO tidak membedakannya.

Apakah Bing memperlakukan 301 dan 308 secara berbeda? Juga tidak.

Sebagian besar tulisan tentang topik ini hanya membahas Google, sehingga ada celah. Fabrice Canel dari Bing menjawabnya secara langsung pada September 2024 ketika menanggapi pertanyaan apakah Bing memperlakukan redirect permanen 308 sama seperti 301: “Bing treats 308 redirects the same as 301 redirects.” (terjemahan) “Bing memperlakukan redirect 308 sama seperti redirect 301.” Schwartz mencatat bahwa hal ini sesuai dengan pernyataan Google pada 2021.

Jadi, kedua mesin utama telah menyatakannya secara publik: 308 secara fungsional identik dengan 301 untuk crawling, pengindeksan, dan konsolidasi sinyal. Tidak ada mesin yang menganggap 308 lebih unggul untuk SEO.

Mitos yang perlu dibantah: “308 is better for SEO / migrate all your 301s” (terjemahan) “308 lebih baik untuk SEO / migrasikan semua 301 Anda”

Saya akan mengatakannya terus terang karena halaman berkualitas rendah terus menyiratkan hal ini. Tidak ada manfaat SEO memilih 308 dibanding 301 untuk redirect biasa, dan tidak ada alasan memigrasikan semua 301 yang sudah ada ke 308. Ini bukan opini saya; itulah posisi yang dinyatakan mesin pencari:

  • Dokumentasi Google menyebut 308 “equivalent to 301.” (terjemahan) “setara dengan 301.”
  • Illyes berkata: “we just merge that with 301.” (terjemahan) “kami cukup menggabungkannya dengan 301.”
  • Canel menyatakan bahwa Bing “treats 308 redirects the same as 301 redirects.” (terjemahan) “memperlakukan redirect 308 sama seperti redirect 301.”

Mengganti semua 301 menjadi 308 tidak memberi keuntungan peringkat dan menambah risiko pada tooling lama atau edge yang hanya mengenali 301/302 dengan baik (akan dibahas di bawah). Itu hanya pergantian tanpa manfaat.

Ada baiknya membandingkan hal ini dengan mitos yang memang masih diperdebatkan: klaim lama “301s lose/dilute PageRank” (terjemahan) “301s lose/dilute PageRank”. Klaim itu masih muncul dan telah berulang kali dibantah Google. Namun, perhatikan bedanya—mitos pengenceran PageRank adalah kesalahpahaman yang dikoreksi Google, sedangkan kesetaraan 301-vs-308 dinyatakan konsisten oleh Google, Bing, dan dokumentasi sejak 2018. Pertanyaan ini sudah tuntas, bukan sengketa. (Kisah PageRank lengkap ada di perbandingan 301-vs-302 dalam klaster ini.)

Kapan 308 merupakan pilihan yang tepat secara teknis

Pilih 308 ketika hilangnya metode atau body permintaan akan merusak fungsionalitas (bukan peringkat):

  • Endpoint API yang dipindahkan dan menerima POST/PUT/DELETE dari klien.
  • URL webhook—pengirim melakukan POST dengan payload yang tidak boleh hilang.
  • Target aksi formulir<form> mengirim data yang harus tiba utuh di URL baru.
  • Alur POST autentikasi/login yang membawa kredensial atau token di dalam body.

Khusus untuk POST, 301 berisiko membuat klien mengubah permintaan menjadi GET sehingga body terhenti; 308 melarang perubahan itu. Untuk PUT/DELETE, RFC juga tidak merinci perilaku 301, jadi jangan berasumsi—aturan pelestarian metode 308 tetap berlaku apa pun metodenya.

Sebelum melakukan cutover API, webhook, atau alur autentikasi, ingat bahwa kode status saja tidak menjamin semuanya selamat melewati lompatan—periksa hal-hal berikut sebagai bagian dari perubahan yang sama:

  • Kredensial, cookie, dan header autentikasi. Tidak ada kode yang menjanjikan hal ini; uji klien sebenarnya (browser, SDK, atau pengirim webhook), jangan berasumsi semuanya ikut terbawa.
  • Perilaku lintas origin. Redirect yang melintasi origin dapat mengubah apa yang dikirim browser atau klien fetch—verifikasi dengan pemanggil nyata, bukan hanya curl manual.
  • Idempotensi dan efek samping ganda. Jika permintaan yang diulang tidak idempoten (misalnya webhook yang membuat record atau POST pembayaran), percobaan ulang klien setelah redirect dapat mengeksekusi tindakan dua kali. Pastikan tujuan menangani pengulangan dengan aman sebelum mengandalkan 308 untuk “just work” (terjemahan) “berfungsi begitu saja.”
  • Lakukan staging dan siapkan rollback dengan mempertimbangkan cache. Respons 301 dan 308 dapat di-cache secara heuristik, sehingga klien atau perantara yang sudah menyimpan respons lama mungkin tetap menggunakannya setelah kode diubah. Uji dengan klien baru dan klien yang telah mengunjungi URL sebelum perubahan, lalu siapkan rencana rollback yang memperhitungkan keadaan cache—jangan menganggap pergantian terjadi seketika.

Kapan 301 tetap menjadi pilihan pragmatis

Untuk semua hal yang berupa GET biasa—dan itulah sebagian besar yang dialihkan oleh praktisi SEO—301 tetap menjadi pilihan yang masuk akal:

  • Perubahan halaman/URL standar dan pemindahan konten.
  • Perubahan domain dan penggabungan situs.
  • Migrasi HTTP → HTTPS.
  • Konsolidasi varian www/non-www atau garis miring penutup.

Mengapa memilih kode yang lebih lama ketika 308 “lebih ketat”? Ada tiga alasan praktis:

  1. Pengenalan lebih luas. 301 mendahului 308 dua dekade dan dikenali oleh sebagian besar browser, proxy, CDN, crawler, serta alat analitik yang digunakan saat ini maupun pada sistem lama. 308 kini sudah berusia lebih dari satu dekade dan didukung luas, tetapi klien lama dan alat edge masih memiliki banyak variasi—jangan menganggap semua alat di stack Anda mengenalinya tanpa pemeriksaan.
  2. Kenyataan tooling. Banyak alat umum memakai 301/302 sebagai default atau hanya mengekspos keduanya dengan baik. Plugin redirect WordPress, pembuat aturan Cloudflare, dan beberapa platform serverless/CDN cenderung menggunakan 301/302; beberapa bahkan mengeluarkan 302/307 terlepas dari konfigurasi Anda. Bagi pemilik situs nonteknis, “what my platform actually supports” (terjemahan) “apa yang sebenarnya didukung platform saya” sering menjadi penentu nyata.
  3. Tidak ada keuntungan. Google dan Bing memproses kedua kode dengan cara yang sama untuk crawling dan pengindeksan, jadi tidak ada alasan memilih kode yang dukungannya lebih sempit untuk pemindahan halaman biasa.

Aturan praktisnya: GET permanen biasa → 301; permintaan non-GET yang harus dipertahankan → 308.

Cara menerapkan masing-masing

Sintaksnya hampir sama—Anda hanya mengubah angkanya.

Apache (.htaccess)

# 301 — permanent, for a normal page move
Redirect 301 /old-page /new-page

# 308 — permanent + method-preserving, for an API/form endpoint
RewriteEngine On
RewriteRule ^old-api/(.*)$ /new-api/$1 [R=308,L]

nginx

# 301
location = /old-page {
    return 301 /new-page;
}

# 308 — preserves POST body to the API
location = /old-api {
    return 308 /new-api;
}

Catatan ini berlaku untuk keduanya: beberapa CDN, platform edge, dan plugin CMS tidak menghormati 308 yang Anda konfigurasikan dan malah mengirim 301/302/307. Jika mempertahankan metode benar-benar penting, verifikasi respons yang benar-benar Anda kirim (gunakan curl pada URL dan baca baris status), jangan hanya mempercayai konfigurasi. Sintaks direktif juga berubah antarversi server dan framework — periksa dokumentasi Apache/nginx versi Anda (atau framework jika yang menghasilkan redirect), jangan menganggap cuplikan di atas masih sama persis untuk penyiapan Anda.

Pengungkit yang lebih penting daripada pilihan 301-vs-308: panjang rantai

Kode apa pun yang dipilih, pengungkit performa yang lebih besar adalah menjaga redirect tetap singkat. Google mengikuti sekitar 10 lompatan redirect sebelum menyerah, dan setiap lompatan tambahan menambah latensi serta peluang sinyal bocor. Satu lompatan bersih dengan kode yang tepat lebih baik daripada rantai kode yang “secara teknis benar” (terjemahan) “technically correct”. Arahkan langsung ke tujuan akhir.

Posisi artikel ini dalam klaster

301 dan 308 adalah dua kode redirect permanen, dan masing-masing memiliki pembahasan mendalam di klaster ini bersama pasangan sementaranya (302 dan saudara ketatnya, 307) serta anggota 3xx lainnya, 303. Perbandingan tersebut membentuk sebuah kisi: 301-vs-302 adalah permanen-versus-sementara, 302-vs-307 adalah pasangan sementara-longgar-versus-ketat, sedangkan artikel ini—301-vs-308—adalah pasangan permanen-longgar-versus-ketat. Waspadai juga bahaya operasional seperti rantai redirect dan loop redirect. Untuk seluruh keluarga respons server, lihat Hub Kode Status HTTP; jenis redirect juga merupakan salah satu sinyal kanonikalisasi yang dibahas di kanonikalisasi.

Try it live

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

Open in new tab ↗
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.