Mas Ahmad SafwanSEO & AI Search Knowledge Base Cari
Menu

Technical SEO menengah

Redirect 301 vs 302 (dan 307, 308)

Untuk Google, pertanyaan pentingnya bukan "301 atau 302" melainkan "permanen atau sementara", karena itulah yang menentukan URL mana yang jadi canonical. Tabel di bawah menjawab kasus-kasus yang sebenarnya dihadapi orang.

Oleh Diterbitkan 4 menit baca

Untuk SEO, 301 dan 308 setara; 302 dan 307 setara. Perbedaannya ada di perlakuan method HTTP, yang jarang relevan untuk halaman biasa.
KodeArtiDianggap GoogleMethod HTTPPakai untuk
301Moved PermanentlyPermanenBoleh berubah ke GETHalaman pindah, ganti domain, ganti struktur URL, HTTP ke HTTPS, www ke non-www
302FoundSementaraBoleh berubah ke GETPengalihan sementara: promo, pengalihan geo, A/B test
307Temporary RedirectSementaraDipertahankanSama dengan 302 tapi method dijaga; relevan untuk form POST
308Permanent RedirectPermanenDipertahankanSama dengan 301 tapi method dijaga

Apa arti "permanen" dan "sementara" bagi Google

Dokumentasi Google menjelaskan redirect dalam istilah kanonikalisasi, bukan "link juice". Redirect permanen adalah sinyal kuat bahwa target redirect harus jadi canonical, sehingga hasil pencarian menampilkan URL baru. Redirect sementara adalah sinyal bahwa sumber redirect tetap canonical, sehingga hasil pencarian tetap menampilkan URL lama. Semua sinyal (link, isi) digabungkan ke URL canonical yang dipilih.

Dua konsekuensi praktis:

  • Memakai 302 untuk pindah permanen tidak "membuang" sinyal, tapi URL lama bisa bertahan lebih lama di hasil pencarian, dan Google perlu waktu lebih lama untuk yakin bahwa pindahnya permanen. Google pernah menyatakan bahwa 302 yang bertahan lama akhirnya diperlakukan seperti 301, tapi tidak ada jaminan berapa lama.
  • Memakai 301 untuk pengalihan sementara berisiko: Google mengganti canonical ke target, dan ketika redirect dicabut, URL lama harus "direbut kembali".

Cara redirect yang dikenali Google, dari yang paling andal

CaraKeandalanCatatan
Redirect sisi server (HTTP 3xx)Paling andalDiproses saat crawl, sebelum render. Dikonfigurasi di .htaccess, Nginx, atau aplikasi.
<meta http-equiv="refresh" content="0;url=...">DiterimaDelay 0 dianggap permanen; delay > 0 dianggap sementara. Butuh HTML dimuat dulu.
JavaScript location.href = ...Paling lemahHanya terbaca setelah render. Kalau render gagal atau tertunda, redirect tidak terlihat. Pakai hanya bila server tidak bisa diatur.
"Crypto redirect": halaman berisi link "konten pindah ke sini"Bukan redirectGoogle menyebutnya pilihan terakhir. Tidak memindahkan canonical.

Aturan main saat membuat redirect

  1. Satu ke satu, ke halaman yang setara. Redirect semua URL lama ke beranda diperlakukan Google sebagai soft 404: sinyalnya tidak diteruskan, dan laporan Search Console mencatatnya sebagai halaman hilang.
  2. Hindari chain. A → B → C sebaiknya jadi A → C dan B → C. Dokumentasi Google menyatakan crawler-nya mengikuti sampai 10 hop, tapi tiap hop menambah waktu dan risiko, dan setelah batas itu Search Console melaporkan "Redirect error". Browser dan crawler lain lebih pelit.
  3. Hindari loop. A → B → A membuat kedua URL dilaporkan "Redirect error" dan tidak diindeks.
  4. Pertahankan redirect lama saat migrasi berikutnya. Kalau situs sudah pernah pindah dari X ke Y, lalu pindah lagi ke Z, perbarui aturan supaya X → Z langsung.
  5. Jangan hapus redirect terlalu cepat. Google menyarankan mempertahankannya minimal satu tahun; link dari situs lain ke URL lama akan terus ada bertahun-tahun.
  6. Redirect harus mengembalikan status yang benar. Halaman "Anda akan dialihkan..." dengan status 200 bukan redirect.

Contoh konfigurasi

.htaccess
# Apache (.htaccess), mod_rewrite aktif
RewriteEngine On

# Satu URL ke URL lain
Redirect 301 /blog/canonical-tag-lengkap/ https://www.example.com/technical-seo/canonical/

# Seluruh direktori lama ke direktori baru, mempertahankan sisa path
RewriteRule ^artikel/(.*)$ https://www.example.com/blog/$1 [R=301,L]

# non-www ke www (absolut, supaya aman di belakang proxy/CDN)
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
nginx.conf
# Nginx, di dalam blok server
location = /blog/canonical-tag-lengkap/ {
  return 301 https://www.example.com/technical-seo/canonical/;
}
location ~ ^/artikel/(.*)$ {
  return 301 https://www.example.com/blog/$1;
}

Kalau punya daftar puluhan atau ratusan pasangan URL, generator redirect di situs ini mengubahnya jadi aturan Apache atau Nginx sekaligus memeriksa duplikat, loop, dan chain.

Cara mengecek redirect

curl: ikuti redirect (-L) dan tampilkan header saja (-I)
curl -sIL https://www.example.com/halaman-lama/ | grep -iE "^(HTTP|location)"

HTTP/1.1 301 Moved Permanently
location: https://www.example.com/halaman-baru/
HTTP/1.1 200 OK

Yang dicari: tepat satu baris 3xx diikuti satu baris 200. Dua atau lebih baris 3xx berarti chain. Kode 200 tanpa 3xx padahal halaman berpindah berarti redirect dilakukan lewat JavaScript atau tidak ada. Di Search Console, URL yang redirect muncul di Page indexing dengan alasan "Page with redirect"; itu normal dan bukan error. Yang perlu diperiksa adalah "Redirect error".

Skenario yang sering salah

SkenarioYang sering dilakukanYang sebaiknya
Produk habis permanen301 ke beranda301 ke kategori atau produk pengganti; kalau tidak ada, biarkan 404/410
Halaman promo berakhir301 ke beranda302 ke halaman induk selama promo tidak aktif, atau kembalikan konten evergreen di URL yang sama
Ganti domainRedirect beranda sajaRedirect per URL, lalu pakai Change of Address di Search Console
HTTP ke HTTPS302 dari CDN301 (atau 308) permanen; pastikan tidak ada chain HTTP → HTTPS non-www → HTTPS www
Halaman digabung ke halaman lainCanonical dari halaman lama301 setelah isinya benar-benar dipindahkan

Rujukan

  1. Redirects and Google Search Google Search Central
  2. Site moves with URL changes Google Search Central
  3. RFC 9110, section 15.4: Redirection 3xx IETF

Tentang penulis

Ahmad Safwan menulis dan mendokumentasikan pembelajaran tentang SEO, technical SEO, search visibility, dan perkembangan AI Search di situs ini. Koreksi dan pertanyaan lewat halaman kontak.

Lanjut membaca

  • Crawling vs indexingpemula

    Dua proses berbeda dengan alat kontrol berbeda, dan kenapa di-crawl tidak berarti diindeks.

  • Robots.txtmenengah

    Sintaks, aturan pencocokan Google, contoh berkas, dan lima kesalahan yang sering terjadi.

  • XML sitemappemula

    Format, batas, lastmod yang jujur, dan apa yang tidak dilakukan sitemap.