Yönlendirme döngüsü, tarayıcıda URL’ler arasında tekrarlanan 301/302 zinciri veya NGINX içinde aynı URI’nin yeniden işlenmesi şeklinde ortaya çıkar. HTTPS, www, reverse proxy, uygulama URL’si ve rewrite bayrakları birlikte incelenmelidir.
2026/07/17 04:11:31 [error] 2418#2418: *1411 rewrite or internal redirection cycle while internally redirecting to "/index.php"
HTTP/2 301
location: https://example.com/
Tarayıcı redirect loop’unda istemci ardışık 3xx cevaplarla URL’ler arasında gidip gelir. Internal redirection cycle ise NGINX’in location/rewrite işlemleri içinde aynı URI’yi tekrar eşlemesidir.
HTTP→HTTPS ve www→non-www gibi kanonik yönlendirmeler tek bir açık kuralla yapılmalıdır. Bir server bloğu www’ye, uygulama non-www’ye döndürürse sonsuz döngü oluşur.
Reverse proxy arkasında uygulama gerçek istemci şemasını görmeyebilir. X-Forwarded-Proto doğru aktarılmazsa uygulama HTTPS isteğini HTTP sanıp tekrar HTTPS’e yönlendirebilir.
Cloudflare Flexible SSL, ziyaretçi ile Cloudflare arasında HTTPS fakat Cloudflare ile origin arasında HTTP kullanır. Origin zorunlu HTTPS yönlendirmesi yapıyorsa döngü oluşabilir.
NGINX rewrite modülü URI değiştiğinde location aramasını tekrarlar ve döngü sınırlıdır. Yanlış last, try_files veya error_page hedefi sonunda 500 internal cycle hatası verebilir.
301 cevapları tarayıcı ve CDN tarafından cache’lenebilir; düzeltme testlerinde önce curl ile zinciri görün, gerektiğinde geçici 302 kullanın.
E-postada, tarayıcıda veya SSH günlüğünde gördüğünüz ifadeyi aratın. Her kartta anlam, muhtemel neden ve güvenli ilk işlem bulunur.
Anlamı: Tarayıcı çok sayıda dış yönlendirme takip etti.
Muhtemel neden: HTTP/HTTPS, www, uygulama veya proxy kuralları çakışıyor.
Anlamı: NGINX aynı URI’yi iç yönlendirmede tekrar tekrar işliyor.
Muhtemel neden: Yanlış rewrite last, try_files veya error_page hedefi.
Anlamı: Tarayıcı genel redirect loop mesajıdır.
Muhtemel neden: Sunucu, uygulama, CDN veya cookie bazlı yönlendirme.
Anlamı: Kalıcı yönlendirme karşılıklı iki URL üretir.
Muhtemel neden: www/non-www veya slash politikası çakışması.
Anlamı: Origin ve proxy şema bilgisi uyuşmuyor.
Muhtemel neden: X-Forwarded-Proto eksik veya Flexible SSL.
Anlamı: Hata sayfası kendisi aynı hatayı yeniden üretiyor.
Muhtemel neden: error_page hedefi erişilemez veya aynı location’a dönüyor.
Anlamı: WordPress home/siteurl ile NGINX kanoniği farklı.
Muhtemel neden: HTTP/HTTPS veya www uyumsuzluğu.
Anlamı: Tarayıcı NGINX’e ulaşmadan HTTP’yi HTTPS’e yükseltir.
Muhtemel neden: Önceden gönderilmiş HSTS politikası.
Bu ifadeyle eşleşen kayıt bulunamadı.
Komutlar root erişimi içindir. Önce yalnızca durum ve log toplayın; nedeni görmeden kalıcı ayar değiştirmeyin.
curl -skIL --max-redirs 15 https://example.com/ | grep -Ei 'HTTP/|location:'
Her 3xx adımını ve hedef URL’yi gösterir.
nginx -T | grep -nE 'server_name|return 30[1278]|rewrite |try_files|error_page|X-Forwarded-Proto'
Döngü oluşturabilecek etkin yönergeleri listeler.
curl -skI https://example.com/
curl -skI --resolve example.com:443:ORIGIN_IP https://example.com/
CDN veya reverse proxy katmanını ayırır.
grep -R 'rewrite or internal redirection cycle' /var/log/nginx 2>/dev/null | tail -n 50
Internal cycle hedefini ve isteği bulur.
wp option get home --path=/var/www/example
wp option get siteurl --path=/var/www/example
Uygulama kanonik URL’sini NGINX ile karşılaştırır.
nginx -t && systemctl reload nginx
curl -skIL --max-redirs 10 https://example.com/
Düzeltme sonrası zincirin sonlandığını doğrular.
NGINX hatasının temel nedeni aynı olsa da paket yolları, servis adları, güvenlik katmanları ve sanal host yönetimi kullanılan Linux dağıtımına veya Plesk altyapısına göre değişir.
NGINX Too Many Redirects için systemd, paket yolu ve journald kontrolleri.
curl -skIL --max-redirs 15 https://example.com/
nginx -T | grep -nE 'return 30|rewrite |X-Forwarded-Proto'NGINX Too Many Redirects için SELinux, PHP-FPM pool ve RHEL tabanlı servis kontrolleri.
curl -skIL --max-redirs 15 https://example.com/
nginx -T | grep -nE 'return 30|rewrite |X-Forwarded-Proto'Plesk tarafından üretilen NGINX sanal host dosyalarında nginx too many redirects kontrolü.
grep -R 'return 30\|rewrite ' /var/www/vhosts/system/example.com/conf 2>/dev/null
plesk repair web example.com -nDış 3xx zinciri ile NGINX internal cycle sorununu ayırıp tek kanonik URL ve doğru proxy şeması oluşturun.
Her 301/302’nin kaynak ve hedef URL’sini kaydedin.
curl -skIL --max-redirs 15 https://example.com/ | grep -Ei 'HTTP/|location:'Origin IP’ye doğrudan istek göndererek döngünün nerede başladığını bulun.
curl -skIL --resolve example.com:443:ORIGIN_IP https://example.com/HTTPS ve www tercihini yalnız bir açık server bloğunda uygulayın.
nginx -T | grep -nE 'server_name|return 30'Backend uygulama gerçek istemci şemasını doğru görmelidir.
nginx -T | grep -n 'X-Forwarded-Proto'try_files, error_page ve rewrite last hedeflerinin aynı location’a dönmediğini doğrulayın.
grep 'redirection cycle' /var/log/nginx/error.log | tail -n 20Curl, gizli pencere ve gerektiğinde CDN cache purge ile zinciri doğrulayın.
nginx -t && systemctl reload nginx
curl -skIL --max-redirs 10 https://example.com/Origin şeması ve X-Forwarded-Proto uyuşmuyor olabilir.
curl -sIL http://example.com/; curl -skIL https://example.com/NGINX ile uygulama farklı kanonik host seçiyor olabilir.
curl -skI https://www.example.com/; curl -skI https://example.com/Origin HTTPS zorluyorsa Full/Strict moda geçiş ve sertifika kontrolü gerekir.
Origin ve Cloudflare isteklerinin Location değerlerini karşılaştırın.home/siteurl, SSL proxy header ve cookie domain kontrol edilir.
wp option get home; wp option get siteurlrewrite last, try_files veya error_page aynı URI’yi yeniden eşliyor.
grep 'redirection cycle' /var/log/nginx/error.log | tailUygulama ile NGINX’in trailing slash politikası çakışıyor olabilir.
curl -skIL https://example.com/yol; curl -skIL https://example.com/yol/HTTP/HTTPS, www/non-www, CDN, reverse proxy veya uygulama yönlendirmelerinin birbirine geri dönmesiyle oluşur.
Hayır. Internal cycle NGINX içinde URI tekrar işlenmesidir; tarayıcı loop ise ardışık 3xx cevaplarla istemci tarafında görülür.
Flexible SSL ile origin HTTP görürken origin HTTPS’e yönlendirirse Cloudflare tekrar HTTP ile bağlanır ve döngü oluşabilir.
Reverse proxy, istemcinin asıl HTTP/HTTPS şemasını backend uygulamaya iletir; yanlışsa uygulama gereksiz HTTPS redirect üretebilir.
curl ile header zincirini inceleyin, gizli pencere kullanın ve gerekiyorsa CDN cache’ini temizleyin. Test aşamasında geçici 302 daha güvenlidir.
home/siteurl, proxy SSL header, www tercihi ve NGINX HTTPS yönlendirmesi aynı kanonik URL’ye uyarlanmalıdır.
URI değişip aynı location ve rewrite kuralına yeniden eşleştiğinde tekrar döngüsü oluşabilir; break veya return daha uygun olabilir.
cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim ve güvenlik katmanlarını birlikte analiz ederek yalnızca servisi kaldırmak yerine arızanın temel nedenini gideriyoruz.