Yönlendirme Döngüsü (Redirect Loop) Nedir?
Kısa tanım
Yönlendirme döngüsü, bir URL'nin yönlendirmeleri izlendikçe yeniden kendisine ya da daha önce geçilmiş bir adrese dönmesi ve bu yüzden hiçbir zaman 200 yanıtı veren bir sayfaya ulaşamamasıdır. Tarayıcı belirli bir sayıdan sonra durur ve “çok fazla yönlendirme” hatası verir; arama motoru da sayfayı tarayamaz. Genellikle sunucu, CDN, uygulama ve CMS'teki çakışan kurallardan doğar.
Diğer adları: redirect loop, ERR_TOO_MANY_REDIRECTS, çok fazla yönlendirme, sonsuz yönlendirme

Belirtiler: tarayıcıda, komut satırında, Search Console'da
Döngünün kullanıcıya görünen yüzü bir hata sayfasıdır. Chrome, sayfanın çok fazla kez yönlendirildiğini söyleyen bir hata ekranıyla birlikte ERR_TOO_MANY_REDIRECTS kodunu gösterir; Firefox da sayfanın düzgün yönlendirilmediğini bildirir. curl, izin verilen adım sayısını aşınca curl: (47) Maximum (10) redirects followed hatasıyla durur. Google tarafında ise etkilenen URL'ler Search Console'un Sayfa dizine ekleme raporunda “Yönlendirme hatası” altında listelenir; Google'ın saydığı nedenlerden biri doğrudan yönlendirme döngüsüdür.
Bir yönlendirme zincirinden farkı, sonunda bir hedef olmamasıdır. Zincir yavaş da olsa sayfaya ulaştırır; döngüde sayfa hiç açılmaz, bu yüzden hem kullanıcı hem de tarama açısından bir kesintiyle eşdeğerdir.
En sık görülen nedenler
- CDN ile sunucu arasındaki HTTPS çatışması: CDN ziyaretçiden HTTPS isteği alır ama origin sunucuya HTTP ile bağlanır (Cloudflare'in Flexible şifreleme modu bunun bilinen örneğidir). Sunucu her HTTP isteğini HTTPS'e yönlendirir, CDN bunu yine HTTP ile ister ve döngü kurulur.
- Proxy arkasında yanlış protokol algısı: Uygulama bir reverse proxy arkasında çalışır, TLS proxy'de sonlanır ve uygulama
X-Forwarded-Protobaşlığına güvenmediği için her isteği HTTP sanıp yeniden HTTPS'e yollar. - www ve alan adı ayarlarının çakışması: Sunucu
www'lu adresiwww'suza, CMS'in “site adresi” ayarı ise tersine yönlendirir. - Sondaki eğik çizgi kuralları: Web sunucusu eğik çizgiyi ekler, uygulama kaldırır.
- Oturum ve çerez sorunları: Giriş sayfası da oturum ister, ya da çerez yanlış alan adına yazıldığı için kaydedilmez;
/panelkullanıcıyı/giris'e, giriş başarılı olunca yeniden/panel'e gönderir ve oturum hiç görünmez. - Dil veya ülke yönlendirmeleri: Çerez ya da
Accept-Languagebaşlığına bakan iki kural birbirini tetikler.
Döngüyü curl ile izole etmek
İlk adım döngünün hangi adresler arasında döndüğünü görmektir. Adım sayısını düşük tutmak çıktıyı okunur kılar:
$ curl -sIL --max-redirs 4 https://ornek.com/ | grep -iE '^(HTTP|location)'
HTTP/2 301
location: http://ornek.com/
HTTP/1.1 301 Moved Permanently
Location: https://ornek.com/
HTTP/2 301
location: http://ornek.com/
...Burada HTTPS ile HTTP arasında gidip gelen bir döngü açıkça görülüyor. Sonraki soru, hangi katmanın hangi yönlendirmeyi ürettiğidir. Origin sunucuyu CDN'i atlayarak doğrudan sorgulamak bunu ayırır: curl -sI --resolve ornek.com:443:203.0.113.10 https://ornek.com/ isteği DNS yerine verdiğiniz IP'ye gönderir. Yanıt başlıklarındaki server ve CDN'e özgü başlıklar da yönlendirmenin kaynağını ele verir. Oturuma bağlı döngülerde -c cerezler.txt -b cerezler.txt ile çerezleri saklayıp göndermek, tarayıcının yaşadığı akışı birebir tekrarlar.
Kalıcı çözüm: her kuralın tek bir sahibi olsun
Döngüleri kalıcı olarak önlemenin yolu, protokol, alan adı ve eğik çizgi gibi her normalizasyonun yalnızca bir katmanda yapılmasıdır. HTTPS zorlamasını CDN'de yapıyorsanız origin'deki aynı kuralı kaldırın ya da CDN'i origin'e HTTPS ile bağlanacak şekilde (Cloudflare'de Full ya da Full (strict) modu) ayarlayın. Proxy arkasındaki uygulamaya, proxy'den gelen X-Forwarded-Proto başlığına güvenmesini söyleyin. CMS'teki site adresi ayarını sunucudaki kanonik adresle aynı yapın.
Düzeltmeden sonra testi gizli pencerede ya da curl ile yapın. Tarayıcılar 301 yönlendirmeleri önbelleğe alabildiği için, sunucu tarafı düzelse bile normal pencerede eski döngü bir süre görünmeye devam edebilir. Yönlendirme türlerine genel bakış için yönlendirme sayfası, CDN tarafındaki nedenler için Cloudflare belgeleri iyi bir başlangıçtır.

