Kardiyoloji pratiğinde hekimlerin elektrokardiyogram (EKG) kağıdında gördüklerinde nefeslerini tuttuğu ritim bozukluklarından biri "Atriyoventriküler Düğümsel Re-entry Taşikardisi"dir (AVNRT). Sağlıklı bir kalpte elektriksel uyarı sinüs düğümünden doğar, kulakçıkları kasar, AV düğümden geçer, karıncıkları uyarır ve sonlanır. Tek bir uyarı, tek bir vuru üretir.

Ancak AV düğümün etrafında doğuştan veya sonradan oluşmuş mikroskobik bir elektriksel kısa devre yolu (aksesuar yolak) varsa felaket başlar. Sinyal aşağı indikten sonra sönmez; o kısa devre yolundan geriye, yukarı kaçar. Yukarı varan sinyal tekrar aşağı iner. Kalp kendi ürettiği sinyali sonsuz bir kısır döngü içinde kendi kendine geri beslemeye başlar. Dakikada 220-250 vuruyla çırpınan kalp, o elektriksel döngüyü kıramadığı için kan pompalayamaz, tansiyon sıfıra yaklaşır ve hasta senkopla (bayılma) yere yığılır. Kalbi durduran şey dışarıdan gelen bir darbe değil, kendi iletim yolundaki o sonsuz döngüdür.

Web altyapısında ve HTTP protokolünde de sistem yöneticilerinin destek panellerine en çok düşen ve müşteriyi delirtme noktasına getiren arıza tam olarak bu kardiyak re-entry tablosudur: ERR_TOO_MANY_REDIRECTS (Çok Fazla Yönlendirme Hatası).

Cuma Gecesi 00:30: SEO Uzmanının Gizli Dokunuşu

Olay genellikle sitenin SEO puanını artırmak isteyen hevesli bir site sahibinin veya şirketin "dijital pazarlama danışmanının" gece yarısı yaptığı küçük bir operasyonla başlar.

Danışman Google'da bir makale okumuştur: "Siteniz hem www ile hem www olmadan açılıyorsa Google sizi cezalandırır! Sitenizi tek bir adrese 301 ile kalıcı yönlendirmelisiniz."

Harika bir tavsiyedir. Danışman hemen cPanel Dosya Yöneticisi'ne girer, .htaccess dosyasını açar ve bir forumdan kopyaladığı şu sihirli kodu dosyanın en tepesine yapıştırır:

# Kural 1: www olanı www olmayana yönlendir
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.sirketadi\.com [NC]
RewriteRule ^(.*)$ https://sirketadi.com/$1 [L,R=301]

Yetmez, arkasından WordPress panelindeki "Ayarlar > Genel" sekmesine girer. "WordPress Adresi (URL)" kutusuna https://www.sirketadi.com yazar!

Farkında mısınız?

  • .htaccess dosyası der ki: "Eğer www ile gelirsen seni www OLMAYANA atarım!"
  • WordPress çekirdeği der ki: "Eğer www olmadan gelirsen seni www OLAN sayfaya atarım!"

İki ayrı yazılım katmanı, birbirine taban tabana zıt iki yönlendirme emriyle donatılmıştır!

Sonsuz Tenis Maçı: Tarayıcının Çöküşü

Kullanıcı tarayıcısını açar ve sirketadi.com yazar. Ve o mikro saniyede, insan gözünün takip edemeyeceği hızda bir dijital pinpon maçı başlar:

  1. Tarayıcı sunucuya gider: "Bana sirketadi.com adresini ver."
  2. WordPress yanıt verir: "HTTP 301 Moved Permanently -> Git www.sirketadi.com adresine!"
  3. Tarayıcı yeni adrese koşar: "Bana www.sirketadi.com adresini ver."
  4. .htaccess motoru (mod_rewrite) kapıda karşılar: "HTTP 301 Moved Permanently -> Git sirketadi.com adresine!"
  5. Tarayıcı tekrar döner: "Bana sirketadi.com adresini ver..."
  6. WordPress: "www'ye git!"
  7. .htaccess: "www olmayana git!"

İstek iki kapı arasında saniyede yüzlerce kez top gibi gidip gelir. Chrome, Firefox ve Safari tarayıcıları bu tür sonsuz döngüleri tespit edebilmek için bir sayaç tutar. Sayaç 20 yönlendirmeyi aştığı anda tarayıcı pes eder, emniyet kemerini çeker ve ekrana o meşhur gri ölüm sayfasını basar:

Bu sayfa çalışmıyor
sirketadi.com sizi çok fazla kez yönlendirdi.
Çerezleri temizlemeyi deneyin.
ERR_TOO_MANY_REDIRECTS

İkinci Büyük Tuzak: Cloudflare Flexible SSL Felaketi

Bu re-entry taşikardisinin ikinci ve çok daha popüler bir varyantı vardır: Cloudflare Flexible SSL Çıkmazı.

Kullanıcı Cloudflare hesabı açar. SSL/TLS şifreleme modunu "Flexible" olarak seçer. Flexible modunun anlamı şudur:

  • Ziyaretçi ile Cloudflare arası şifrelidir (HTTPS - Port 443).
  • Cloudflare ile sizin kök sunucunuz arası ise şifresizdir (HTTP - Port 80)!

Kullanıcı aynı zamanda sunucusundaki .htaccess dosyasına veya WordPress'e "Bütün ziyaretçileri zorla HTTPS'e yönlendir" kuralı koyar.

İşte re-entry halkası tamamlanmıştır:

  1. Ziyaretçi HTTPS ile Cloudflare'e gelir.
  2. Cloudflare kök sunucunuza HTTP (Port 80) üzerinden bağlanır.
  3. Sunucunuz HTTP isteğini görür görmez: "Dur! Ben HTTP kabul etmem, HTTPS'e git!" diyerek 301 atar.
  4. Cloudflare 301 yanıtını alır, tekrar kök sunucuya HTTP üzerinden bağlanır!
  5. Sunucu tekrar "HTTPS'e git" der...

Ve 20 adım sonra site yine ERR_TOO_MANY_REDIRECTS ile donakalır.

Destek Masasında Gece Çığlığı

Gece saat 01:15'te şirketin genel müdürü ve danışmanı hosting firmasına bilet açar:

"Sitenin ayarlarına hiçbir şey yapmadık, durduk yere 'Çok fazla yönlendirme' hatası verdi! Sunucunuzun DNS yönlendirme motoru bozulmuş. Derhal düzeltin sitemizi, ticaretimiz durdu!"

Destek mühendisi terminali açar ve curl ile yönlendirme zincirini tek satırda teşhis eder:

curl -ILs https://sirketadi.com | grep -E "HTTP/|location:"

Ekrana dökülen çıktı, ritim bozukluğunun EKG kaydı gibidir:

HTTP/1.1 301 Moved Permanently
location: https://www.sirketadi.com/
HTTP/1.1 301 Moved Permanently
location: https://sirketadi.com/
HTTP/1.1 301 Moved Permanently
location: https://www.sirketadi.com/
...

Mühendis tek bir hamle yapar: FTP'den .htaccess dosyasını açar, o hatalı yapıştırılmış 3 satırlık kodu siler veya Cloudflare modunu "Full (Strict)" moduna çeker. Site bir saniye içinde düzelir.

Re-entry Döngülerini Kırma Protokolü

Bir sitede ERR_TOO_MANY_REDIRECTS hatası patlak verdiğinde izlenecek cerrahi adımlar basittir:

  1. Yönlendirmeyi Tek Bir Merkezden Yönetin: Yönlendirmeyi hem Cloudflare'de, hem .htaccess'te, hem de WordPress eklentisinde aynı anda yapmayın! Karar tek bir otoriteye bırakılmalıdır.
  2. Cloudflare Kullanıyorsanız Daima "Full (Strict)" Mod: Kök sunucunuza ücretsiz bir Let's Encrypt sertifikası kurun ve Cloudflare'i mutlaka "Full" veya "Full (Strict)" moduna alın. Asla "Flexible" modda bırakmayın.
  3. WordPress Site URL Eşitliği: wp-config.php dosyasına şu iki satırı ekleyerek veritabanındaki çelişkileri kesin olarak ezin:
    define('WP_HOME', 'https://sirketadi.com');
    define('WP_SITEURL', 'https://sirketadi.com');
  4. Tarayıcı Önbelleğini Değil curl Aracını Kullanın: 301 yönlendirmeleri tarayıcılar tarafından kalıcı olarak hafızaya (cache) alınır. Kodu düzeltseniz bile tarayıcınız eski döngüyü hatırlayıp hata vermeye devam edebilir. Testlerinizi her zaman gizli sekmeden veya terminalden curl -IL ile yapın.

Kalpteki aksesuar iletim yolu nasıl kalbi sonsuz bir kasılma girdabında boğuyorsa, çelişkili iki yönlendirme satırı da sitenizi öyle erişilmez bir kısırdöngüye hapseder. HTTP yönlendirmeleri bir sihir değil, saf mantık kuralıdır. Nereye gittiğini bilmeyen istek, kendi kuyruğunu ısıran yılan gibi eninde sonunda dönüp kendi boğazına sarılır.