WordPress Sonsuz Yönlendirme Döngüsü Çözümü (Too Many Redirects)
WordPress Too Many Redirects hatası Cloudflare Flexible SSL ve HTTPS zorlaması çakışmasından kaynaklanır. SSL modunu Full yapın.
Too Many Redirects Hatası Nedir?
Too Many Redirects (Çok Fazla Yönlendirme) hatası, tarayıcının bir sayfaya erişmeye çalışırken sonsuz bir yönlendirme döngüsüne girdiğinde gösterdiği hata mesajıdır. Tarayıcılar bu döngüyü genellikle 20-30 yönlendirme sonrasında fark ederek "ERR_TOO_MANY_REDIRECTS" (Chrome) veya "The page isn't redirecting properly" (Firefox) hatasıyla durdurur.
WordPress sitelerinde bu hatanın en yaygın nedeni SSL yapılandırması ile Cloudflare ayarları arasındaki çakışmadır: Cloudflare "Flexible SSL" modundayken WordPress HTTPS'e zorlamak için .htaccess veya eklentide yönlendirme kuralı tanımladığında döngü oluşur. Bunun dışında wp-config.php'de yanlış tanımlanmış site URL'leri, çakışan .htaccess kuralları, birden fazla SSL/redirect eklentisinin aynı anda aktif olması ve sunucu yapılandırma hataları da bu hataya yol açar.
Olası Nedenler
- Cloudflare Flexible SSL + WordPress HTTPS zorlaması: Cloudflare HTTP ile sunucuya bağlanırken WordPress HTTPS'e yönlendiriyor.
- wp-config.php'de yanlış URL: WP_HOME veya WP_SITEURL tanımları siteyle uyuşmuyor.
- wp_options tablosunda hatalı URL: Veritabanında siteurl veya home değeri yanlış.
- Çakışan .htaccess kuralları: Birden fazla yönlendirme kuralı birbirini tetikliyor.
- Birden fazla HTTPS/redirect eklentisi: Really Simple SSL + başka bir eklenti çakışıyor.
- Yanlış yapılandırılmış WordPress adresleri: Ayarlar > Genel'deki WordPress Adresi ve Site Adresi uyuşmuyor.
Çözüm Adımları
Cloudflare SSL Modunu "Full" veya "Full (Strict)" Yapma
Cloudflare Flexible SSL modu bu hatanın en yaygın nedenidir. SSL modunu Full olarak değiştirin.
# Cloudflare Dashboard > siteniz.com > SSL/TLS > Overview
# Mevcut: Flexible → Değiştirin: Full veya Full (Strict)
# Full: Cloudflare sunucuya HTTPS ile bağlanır (self-signed sertifika kabul edilir)
# Full (Strict): Cloudflare sunucuya HTTPS ile bağlanır (geçerli sertifika gerekir)
# Sunucunuzda SSL sertifikası yoksa önce Let's Encrypt kurun:
sudo certbot --nginx -d siteniz.com -d www.siteniz.com
wp-config.php URL Düzeltmesi
wp-config.php'deki WP_HOME ve WP_SITEURL sabit değerler döngüye yol açıyor olabilir.
sudo nano /var/www/html/wp-config.php
// Yanlış veya eksik tanım - şu satırları ekleyin/düzeltin:
define('WP_HOME', 'https://siteniz.com');
define('WP_SITEURL', 'https://siteniz.com');
// Cloudflare arkasındayken HTTPS zorlaması için:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
if (isset($_SERVER['HTTP_CF_VISITOR'])) {
$cf_visitor = json_decode($_SERVER['HTTP_CF_VISITOR']);
if ($cf_visitor && $cf_visitor->scheme === 'https') {
$_SERVER['HTTPS'] = 'on';
}
}
Veritabanındaki URL'leri Düzeltme
WordPress URL'leri veritabanında wp_options tablosunda saklanır. MySQL ile düzeltin.
# MySQL bağlantısı
mysql -u wpkullanici -p wordpress_db
# Mevcut değerleri gör
SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');
# Doğru değerleri ayarla
UPDATE wp_options SET option_value = 'https://siteniz.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://siteniz.com' WHERE option_name = 'home';
# Çıkış
exit;
# WP-CLI ile (daha hızlı)
wp option update siteurl 'https://siteniz.com' --path=/var/www/html
wp option update home 'https://siteniz.com' --path=/var/www/html
wp option get siteurl --path=/var/www/html
Nginx Ortamında .htaccess Sorunu Yoktur
Nginx .htaccess dosyasını okumaz; yönlendirme kuralları doğrudan Nginx konfigürasyonunda tanımlanır.
sudo nano /etc/nginx/sites-available/siteniz.conf
server {
listen 80;
server_name siteniz.com www.siteniz.com;
# Cloudflare Full SSL kullanıyorsanız bu yönlendirmeyi KALDIRIN
# return 301 https://$host$request_uri;
# Cloudflare Flexible SSL kullanıyorsanız HTTP → HTTPS yönlendirmesi YOK
}
server {
listen 443 ssl;
server_name siteniz.com www.siteniz.com;
# SSL yapılandırması...
# WordPress için FastCGI Pass
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param HTTPS on; # Cloudflare ile HTTPS zorlaması
include fastcgi_params;
}
}
Apache Ortamında .htaccess Düzeltmesi
WordPress .htaccess dosyasındaki yönlendirme kurallarını kontrol edin ve çakışmaları giderin.
sudo nano /var/www/html/.htaccess
# Cloudflare Full SSL + Apache kombinasyonu için doğru .htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Cloudflare HTTPS tespiti - sonsuz döngüyü önler
RewriteCond %{HTTP:CF-Visitor} '"scheme":"https"'
RewriteRule ^ - [E=HTTPS:on]
# HTTP'den HTTPS'e yönlendir (Cloudflare Full SSL varsa bu satırları ekleyin)
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:CF-Visitor} !'"scheme":"https"'
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Eklentileri SSH ile Devre Dışı Bırakma
Really Simple SSL veya diğer redirect eklentileri çakışmaya neden oluyorsa devre dışı bırakın.
# Tüm eklentileri geçici olarak kapat
cd /var/www/html/wp-content
mv plugins plugins.bak
# Siteyi test et
# WP-CLI ile SSL eklentisini kapat
wp plugin deactivate really-simple-ssl --path=/var/www/html
# Tarayıcı önbelleğini temizle - Chrome
# Ctrl+Shift+Delete → Önbelleklenmiş görüntüler ve dosyalar
# Veya gizli/incognito modda test et
cPanel Ortamında
cPanel hosting üzerindeki WordPress sitelerinde redirect döngüsü çözümü.
# cPanel > File Manager > public_html/.htaccess düzenle
# cPanel > phpMyAdmin > wp_options tablosu > siteurl ve home değerlerini düzelt
# cPanel > SSL/TLS > AutoSSL aktif olmalı (Full SSL için)
# Cloudflare > SSL/TLS > Full veya Full Strict seçin
Özet ve Önleyici Tedbirler
- Cloudflare kullanıyorsanız SSL modunu hiçbir zaman "Flexible" bırakmayın; "Full" veya "Full (Strict)" kullanın.
- Yalnızca bir HTTPS yönlendirme mekanizması kullanın: eklenti, .htaccess veya sunucu yapılandırması - ikisi aynı anda olmasın.
- WordPress'te site URL'lerini değiştirmeden önce veritabanı yedeği alın.
- Cloudflare arkasındaki WordPress için wp-config.php'e CF-Visitor başlık kontrolü ekleyin.
- Tarayıcı önbelleğini ve çerezlerini temizleyerek test edin; önbellek döngüyü sürdürebilir.
- Staging ortamında SSL ve redirect değişikliklerini önce test edin.
İlgili Makaleler
Yorumlar
Henüz yorum yok. İlk yorumu siz yapın!