ERR_TOO_MANY_REDIRECTS berarti browser mengikuti rantai pengalihan lebih dari dua puluh langkah, menyadari dirinya berputar-putar, lalu berhenti. Ini bukan kerusakan acak — ada loop yang nyata, dan loop itu bisa dilihat.
Yang membuat error ini lebih ramah dibanding kebanyakan error lain: penyebabnya hampir selalu dari kelompok yang sangat sempit, yaitu dua komponen yang mengurus satu aturan ke arah berlawanan. Cloudflare mengirim HTTP sementara server memaksa HTTPS. WordPress ingin ada "www" sementara .htaccess ingin menghapusnya. Menemukan pasangan yang bertengkar sudah menyelesaikan pekerjaannya.
Melihat loop-nya dalam tiga puluh detik
Jangan menebak. Satu perintah akan mencetak seluruh rantai pengalihan lengkap dengan kode status dan tujuan setiap langkah.
Jalankan: curl -sIL -o /dev/null -w "%{http_code} %{url_effective}\n" https://situsanda.com/ — atau versi yang lebih rinci untuk melihat tiap hop: curl -sIL https://situsanda.com/ | grep -iE "^(HTTP|location)".
Hasilnya langsung memperlihatkan polanya. Dua alamat yang saling menunjuk berarti bentrokan antara dua konfigurasi. Satu alamat yang menunjuk ke dirinya sendiri berarti ada aturan rewrite tanpa kondisi berhenti.
| Pola yang Anda lihat | Penyebab yang hampir pasti |
|---|---|
| http → https → http → https | SSL mode Cloudflare "Flexible" sementara server memaksa HTTPS |
| pakai www → tanpa www → pakai www | Siteurl WordPress berbeda dari aturan di .htaccess |
| /halaman → /halaman/ → /halaman | Bentrokan aturan trailing slash |
| URL menunjuk ke dirinya sendiri | Aturan rewrite tanpa kondisi pengecualian |
| / → /login → / | Pengecekan sesi gagal atau cookie tidak tersimpan |
Penyebab umum, dari yang paling sering
- SSL mode Cloudflare diset ke "Flexible". Cloudflare menghubungi server lewat HTTP polos, server melihat HTTP lalu mengalihkan ke HTTPS, Cloudflare kembali memanggil lewat HTTP, dan loop dimulai. Ini penyebab nomor satu, dan solusinya mengubahnya ke "Full (strict)".
- Konfigurasi URL WordPress tidak sejalan dengan aturan server. Kalau siteurl menyimpan versi dengan "www" sementara .htaccess menghapus "www", keduanya akan saling mendorong tanpa henti.
- Dua aturan rewrite yang bertentangan di .htaccess. Biasanya terjadi setelah menempelkan potongan pemaksa HTTPS dari internet ke file yang sudah punya aturan lain.
- Plugin pemaksa SSL dipasang di atas konfigurasi server yang juga memaksa SSL. Keduanya setengah benar, dan hasilnya sebuah loop.
- Pengalihan trailing slash yang saling bertabrakan. Satu lapisan menambahkan garis miring, lapisan lain menghapusnya.
- Cookie sesi tidak bisa disimpan. Aplikasi mengalihkan ke halaman login, login berhasil lalu kembali, tapi sesinya tidak ada sehingga dialihkan lagi ke login.
- Rantai pengalihan lama yang menumpuk setelah pindah domain. Setiap kepindahan menambah satu lapis, dan pada satu titik lapisan-lapisan itu menutup jadi lingkaran.
Periksa dengan urutan ini
- Jalankan perintah curl di atas dan catat rantainya. Semua langkah berikutnya jadi jauh lebih mudah setelah Anda tahu polanya.
- Hapus cookie untuk domain itu lalu coba lagi di jendela penyamaran. Loop akibat cookie rusak akan langsung hilang, dan Anda menghemat sore hari yang terbuang mengubah konfigurasi tanpa perlu.
- Kalau memakai Cloudflare, periksa SSL/TLS mode sebelum hal lain. "Flexible" hampir selalu jawabannya ketika loop melibatkan HTTP dan HTTPS.
- Aktifkan Development Mode di Cloudflare atau matikan sementara proxy-nya (awan abu-abu). Kalau loop hilang, masalahnya di Cloudflare, bukan di server.
- Ubah nama .htaccess menjadi .htaccess.bak lalu coba lagi. Loop yang hilang berarti salah satu aturan di sana pelakunya — kembalikan blok demi blok untuk menemukannya.
- Untuk WordPress, set WP_HOME dan WP_SITEURL langsung di wp-config.php. Cara ini menimpa nilai di database dan menghapus satu sumber bentrokan sepenuhnya.
- Nonaktifkan plugin SSL, cache, dan keamanan. Ketiga kelompok itu sering menambahkan aturan pengalihan tanpa Anda sadari.
- Periksa konfigurasi Nginx atau Apache untuk blok redirect ganda. Setelah banyak penyuntingan, tidak jarang ada dua blok pemaksa HTTPS di dua tempat berbeda.
Memperbaikinya dan menjaganya tetap benar
Satu prinsip yang perlu diingat: setiap aturan normalisasi hanya boleh ada di satu tempat.
Pilih satu lapisan untuk mengurus HTTPS — Cloudflare, server, atau aplikasi — lalu hapus aturan yang sama dari dua lapisan lainnya. Lakukan hal serupa untuk "www" dan trailing slash. Sebagian besar loop bukan karena aturannya salah, melainkan karena aturan yang benar ditulis di dua tempat.
Letakkan pengalihan di lapisan setinggi mungkin. Kalau Cloudflare sudah mengurus HTTPS, server tidak perlu tahu apa-apa tentang itu; kalau server yang mengurus, jangan pasang plugin yang melakukan hal sama.
Ringkas rantai pengalihan lama menjadi satu langkah. Setelah beberapa kali pindah domain, "http://lama" sering harus melewati tiga atau empat hop sebelum sampai tujuan — arahkan langsung ke alamat akhir, sekaligus menghindari risiko loop dan mempercepat pengunjung.
Ingin kendali penuh atas aturan pengalihan dan SSL Anda?
Cloud VPS dengan akses root penuh — satu tempat untuk mengatur HTTPS, rewrite, dan domain. Mulai ฿150/bulan.
Pertanyaan yang Sering Diajukan
Kenapa situs loop di perangkat saya tapi normal di orang lain?
Hampir pasti cookie. Cookie sesi lama atau rusak membuat aplikasi terus mengalihkan Anda ke halaman login lalu kembali. Hapus cookie untuk domain itu, atau buka lewat jendela penyamaran untuk memastikan sebelum menyentuh konfigurasi apa pun.
Saya sudah memperbaiki konfigurasi tapi loop-nya masih ada. Kenapa?
Pengalihan 301 di-cache browser sangat lama, kadang sampai Anda menghapus data penjelajahan. Uji ulang dengan curl dari terminal — kalau curl memberi hasil yang benar, konfigurasinya sudah beres dan yang Anda lihat hanyalah cache lama.
Seberapa besar dampak loop pengalihan pada SEO?
Besar, karena Googlebot tidak bisa mengambil konten sama sekali. Halaman dalam loop tidak bisa di-crawl, tidak bisa masuk indeks, dan halaman yang sudah ada akan keluar dari hasil pencarian bila dibiarkan lama. Gunakan URL Inspection di Search Console untuk memastikan apa yang benar-benar diterima Googlebot.
SSL mode Cloudflare mana yang benar?
Full (strict), selama server Anda punya sertifikat valid — termasuk sertifikat gratis Let's Encrypt. "Flexible" adalah penyebab loop pengalihan paling umum sekaligus membuat jalur antara Cloudflare dan server Anda tidak terenkripsi.
GUIDES
Artikel terkait
Lanjut membaca topik serupa
502 Bad Gateway — Arti dan Cara Mengatasinya
502 berarti satu server meminta halaman ke server lain dan menerima jawaban yang tidak bisa dipakai. Panduan ini menjelaskan dua mesin mana yang terlibat, beda 502 dengan 500 dan 504, serta urutan pemeriksaan supaya Anda menemukan penyebab aslinya lebih dulu.
Baca selengkapnya403 Forbidden — Artinya dan Cara Mengatasinya
403 bukan berarti server rusak. Server paham persis apa yang Anda minta, menemukan filenya, lalu memutuskan Anda tidak boleh mengaksesnya. Penolakan itu disengaja.
Baca selengkapnya404 Not Found — Penyebab, Dampak SEO, dan Kapan Justru Benar
Semua website punya 404 dan sebagian besar tidak masalah. Yang perlu diperhatikan hanya sebagian kecil: halaman yang dulu ada dan masih ditautkan orang, serta versi diam-diam yang mengembalikan status 200 padahal menampilkan "tidak ditemukan".
Baca selengkapnya