Lewati ke isi

Website & Domain

Error Too Many Redirects Setelah Pindah ke HTTPS

Website tiba-tiba ERR_TOO_MANY_REDIRECTS setelah pasang SSL? Kenali lima penyebab paling umum, cara melacaknya dengan curl, dan perbaikannya.

Terbit 6 menit baca

Jawaban singkat

Error too many redirects terjadi saat dua aturan saling melempar pengunjung, misalnya server mengalihkan ke HTTPS sementara Cloudflare mode Flexible meminta lewat HTTP. Lacak rantai redirect dengan curl, lalu sisakan satu tempat saja yang mengatur pengalihan ke HTTPS.

Daftar isi
  1. Kenapa redirect bisa berputar tanpa henti?
  2. Penyebab 1: Cloudflare mode Flexible plus redirect di server
  3. Penyebab 2: Redirect ganda di .htaccess dan plugin
  4. Penyebab 3: WordPress di balik proxy tidak tahu sedang HTTPS
  5. Penyebab 4: www dan non-www saling mengalihkan
  6. Penyebab 5: Cache browser atau HSTS
  7. Cara melacak putaran redirect dengan curl
  8. Ringkasan penyebab dan perbaikan
  9. Kapan memperbaiki di server, kapan di Cloudflare?
  10. Kalau admin WordPress ikut terkunci
  11. Pertanyaan yang sering diajukan

Error "too many redirects" (di Chrome tampil sebagai ERR_TOO_MANY_REDIRECTS, di Firefox "The page isn't redirecting properly") berarti browser terjebak dalam putaran pengalihan. Halaman A mengirim ke B, B mengirim balik ke A, dan seterusnya sampai browser menyerah. Setelah pindah ke HTTPS, putaran ini hampir selalu terjadi karena ada dua pihak yang sama-sama merasa bertugas mengatur protokol.

Taruhannya besar: selama putaran berlangsung, website tidak bisa dibuka sama sekali, termasuk halaman admin. Salah memilih perbaikan, misalnya asal mematikan SSL, bisa menyelesaikan error tapi membuka masalah baru seperti peringatan "Not secure" atau mixed content.

Kenapa redirect bisa berputar tanpa henti?

Redirect sendiri tidak salah. Mengalihkan http:// ke https:// dengan kode 301 adalah praktik standar, seperti dibahas di cara redirect HTTP ke HTTPS lewat .htaccess. Masalahnya muncul saat aturan di satu lapisan bertentangan dengan lapisan lain, atau saat server salah membaca protokol yang sedang dipakai pengunjung.

Lapisan yang biasanya terlibat:

  • CDN atau proxy seperti Cloudflare.
  • Web server, lewat .htaccess (Apache/LiteSpeed) atau konfigurasi Nginx.
  • Aplikasi, misalnya pengaturan URL di WordPress atau plugin SSL.
  • Browser, yang menyimpan redirect 301 dan aturan HSTS di cache.

Penyebab 1: Cloudflare mode Flexible plus redirect di server

Ini penyebab paling sering. Pada mode SSL Flexible, Cloudflare menerima pengunjung lewat HTTPS tapi menghubungi server asal lewat HTTP biasa. Server melihat permintaan HTTP, lalu mengalihkannya ke HTTPS. Cloudflare menerima HTTPS itu, lagi-lagi meneruskannya lewat HTTP, dan putaran dimulai. Dokumentasi resmi Cloudflare menyebut solusinya: hapus redirect HTTPS di server asal, atau ganti mode ke Full atau Full (strict) yang mewajibkan sertifikat terpasang di server asal.

Penyebab 2: Redirect ganda di .htaccess dan plugin

Kamu menambahkan aturan HTTPS di .htaccess, lalu memasang plugin SSL yang juga mengatur redirect, ditambah fitur "Force HTTPS" di panel hosting. Biasanya ketiganya rukun, tapi kalau salah satu memakai syarat berbeda (misalnya memaksa www sementara yang lain memaksa tanpa www), terjadilah tarik-menarik.

Penyebab 3: WordPress di balik proxy tidak tahu sedang HTTPS

Saat SSL diterminasi di proxy atau load balancer, PHP melihat koneksi masuk sebagai HTTP. WordPress yang Site URL-nya sudah https:// lalu terus mengalihkan, karena menurutnya pengunjung belum memakai HTTPS. Dokumentasi WordPress menyarankan menambahkan pengecekan header X-Forwarded-Proto di wp-config.php:

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
    $_SERVER['HTTPS'] = 'on';
}

Taruh baris ini sebelum baris require_once ABSPATH . 'wp-settings.php';. Pakai hanya bila server memang berada di balik proxy tepercaya.

Penyebab 4: www dan non-www saling mengalihkan

Pengaturan domain di WordPress https://www.contoh.com, sementara .htaccess memaksa https://contoh.com. Masing-masing mengembalikan pengunjung ke versi kesukaannya. Tentukan satu versi kanonis dan samakan di semua tempat.

Penyebab 5: Cache browser atau HSTS

Kadang server sudah benar, tapi browser masih menyimpan redirect 301 lama. Coba buka di jendela samaran atau browser lain. Bila di sana normal, hapus cache dan cookie untuk domain itu.

Cara melacak putaran redirect dengan curl

Sebelum mengubah apa pun, lihat rantainya. Dari terminal (atau Terminal di cPanel):

curl -sIL https://contoh.com/ | grep -iE '^(HTTP|location)'

Opsi -I hanya mengambil header, -L mengikuti redirect. curl berhenti setelah 50 lompatan secara bawaan, jadi kalau kamu melihat pola location: yang berulang (misalnya bolak-balik antara http:// dan https://, atau antara www dan tanpa www), itulah putarannya. Pola itu langsung menunjukkan lapisan mana yang bertengkar.

Ringkasan penyebab dan perbaikan

Gejala di rantai redirectPenyebab paling mungkinPerbaikan
https ke https berulang, situs di CloudflareMode Flexible + redirect di serverPasang SSL di server, ubah mode ke Full (strict)
http dan https bergantianDua aturan bertentanganSisakan satu tempat pengatur HTTPS
www dan non-www bergantianVersi kanonis tidak samaSamakan Site URL, .htaccess, dan pengaturan CDN
Hanya di satu browserCache 301 atau HSTS lamaHapus cache dan cookie domain
https ke https dengan path sama, di balik proxyAplikasi tidak membaca X-Forwarded-ProtoTambahkan pengecekan header di wp-config.php

Kapan memperbaiki di server, kapan di Cloudflare?

Kalau server asal sudah punya sertifikat yang valid (AutoSSL dari cPanel atau Let's Encrypt sudah cukup), pilihan terbaik adalah mode Full (strict) di Cloudflare. Koneksi terenkripsi dari ujung ke ujung, dan redirect HTTPS boleh tetap tinggal di server. Ini juga pilihan paling aman untuk situs yang memproses login atau pembayaran.

Kalau server belum bisa dipasangi sertifikat dan kamu terpaksa memakai Flexible untuk sementara, pindahkan semua tugas redirect ke Cloudflare (fitur Always Use HTTPS) dan hapus aturan HTTPS di .htaccess maupun plugin. Anggap ini solusi darurat, karena jalur Cloudflare ke server tetap tidak terenkripsi.

Untuk situs tanpa CDN, cukup pastikan hanya ada satu pengatur redirect. Aturan di .htaccess biasanya paling ringan, jadi plugin SSL atau fitur Force HTTPS di panel bisa dimatikan bagian redirect-nya. Setelah putaran beres, periksa juga sisa mixed content setelah pasang SSL agar ikon gembok tampil sempurna.

Kalau admin WordPress ikut terkunci

Karena wp-admin juga ikut berputar, ubah URL lewat file. Tambahkan sementara di wp-config.php:

define( 'WP_HOME', 'https://contoh.com' );
define( 'WP_SITEURL', 'https://contoh.com' );

Konstanta ini mengalahkan nilai di database. Setelah bisa masuk lagi dan pengaturan di Settings > General sudah benar, kamu boleh menghapusnya.

Pertanyaan yang sering diajukan

Apakah error too many redirects bisa merusak SEO?

Selama putaran terjadi, Googlebot juga gagal membuka halaman, jadi halaman bisa turun atau keluar dari indeks bila dibiarkan berhari-hari. Perbaiki secepatnya, lalu periksa laporan di Search Console.

Mode SSL Cloudflare mana yang sebaiknya dipakai?

Full (strict) bila server asal punya sertifikat valid. Mode ini mencegah putaran redirect sekaligus mengenkripsi jalur Cloudflare ke server.

Saya sudah memperbaiki, kenapa di HP masih error?

Kemungkinan cache browser di HP masih menyimpan redirect lama. Coba mode samaran atau hapus data situs untuk domain itu.

Perlukah plugin SSL kalau sudah ada aturan di .htaccess?

Tidak wajib. Satu pengatur redirect sudah cukup. Plugin boleh dipakai untuk memperbaiki mixed content asalkan fitur redirect-nya tidak bentrok dengan .htaccess.

Sumber & referensi

Baca juga