SSL Kurulumu ve Döngü Hatası Olmadan HTTPS Zorunluluğu

SSL kurulumu, otomatik yenileme ve döngü hatası olmadan HTTPS yönlendirmesi için pratik rehber. Gerçek komutlar ve işinize yarayacak hata ayıklama ipuçlarıyla.

7 dk Güncellendi 15 Sep 2026

ERR_TOO_MANY_REDIRECTS Hatasını Gördünüz mü?

Tarayıcıyı açıyorsunuz, site adresini yazıyorsunuz ve ana sayfa yerine ERR_TOO_MANY_REDIRECTS hatasıyla karşılaşıyorsunuz. Veya WordPress'te "Çok fazla yönlendirme" mesajını görüyorsunuz. Sorun, siteyi HTTPS'ye taşımaya karar verdiğinizde ve .htaccess dosyasına bir yönlendirme kuralı eklediğinizde başladı. Şimdi site çalışmıyor ve kullanıcılar hata mesajı görüyor.

Bu senaryoyu defalarca gördüm. Çözüm, fazladan kuralı silmek değil; yönlendirmeyi nerede uygulayıp nerede uygulamayacağınızı anlamaktır. Bu makalede, Linux hosting'de SSL kurulumu, sertifikanın otomatik yenilenmesi ve döngü oluşturmadan HTTPS'yi zorunlu kılan kural detaylı şekilde incelenecek.

SSL Sertifikasını Nereden Almalı? Let's Encrypt ile Otomatik Sertifika

Hosting'de SSL kurulumu için iki ana yolunuz var: ticari bir sertifika otoritesinden sertifika satın almak veya ücretsiz olan ve her 90 günde bir yenilenen Let's Encrypt'i kullanmak. cPanel veya DirectAdmin kontrol panelli Linux hosting'lerde genellikle AutoSSL aracı zaten aktiftir ve sertifikayı otomatik olarak düzenleyip kurar.

Hosting'inizde AutoSSL yoksa, servis sağlayıcıdan etkinleştirmesini isteyin. Bu araç ACME protokolünü kullanır ve ana alan adı ile alt alan adları için sertifika düzenler. ServerNet'in Linux hosting hizmetinde AutoSSL varsayılan olarak açıktır ve manuel müdahaleye gerek yoktur.

certbot ile Manuel Sertifika Düzenleme

Kontrol paneli olmayan özel sunucu veya VPS'de certbot standart araçtır. Apache web sunucusu ile example.com alan adı için sertifika kurulumu ve düzenlenmesi şu şekilde yapılır:

sudo apt update
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com

certbot, Apache yapılandırma dosyalarını bulur, sertifikayı düzenler ve otomatik olarak ayarlara uygular. Nginx için python3-certbot-apache yerine python3-certbot-nginx kullanın.

Otomatik Sertifika Yenileme; Sitelerin Erişime Kapandığı Nokta

Let's Encrypt sertifikası yalnızca 90 gün geçerlidir. Yenilenmezse, tarayıcılar güvenlik uyarısı gösterir ve kullanıcıları siteye girmekten vazgeçirir. İşte burada hata yapılıyor: cron job yenilemesinin önceden ayarlandığını varsayıyorlar. Oysa birçok sunucuda bu işlem manueldir.

Otomatik yenilemeden emin olmak için önce yenilemenin gerçekten çalıştığını test edin:

sudo certbot renew --dry-run

Bu komut yenilemeyi simüle eder ve bir hata varsa orada gösterir. Ardından cron job'ı kontrol edin:

sudo crontab -l | grep certbot

Çıktı yoksa, cron job'ı ekleyin. Aşağıdaki komut her gün saat 3'te çalışır ve sertifikanın süresi 30 günden az kaldıysa yeniler:

0 3 * * * /usr/bin/certbot renew --quiet

Yenilemeden sonra web sunucusu servisi yeniden yüklenmelidir. certbot genellikle bunu kendisi yapar, ancak --deploy-hook kullanmadıysanız ve servis yeniden yüklenmiyorsa, cron'a şu satırı ekleyin:

0 3 * * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload apache2"

Döngü Olmadan HTTPS Yönlendirmesi; Yazmanız Gereken Kural

Artık sertifika kurulduğuna göre, tüm HTTP trafiğini HTTPS'ye yönlendirmelisiniz. .htaccess dosyasındaki yönlendirme kuralı hassas olmalıdır. Yanlış kural, yönlendirme döngüsü oluşturur. Doğru kural şudur:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

%{HTTPS} off koşulu, yönlendirmenin yalnızca istek HTTP'den geldiğinde çalışacağı anlamına gelir. Bu koşul olmazsa, HTTPS dahil her istek tekrar HTTPS'ye yönlendirilir ve döngü oluşur. Bu tam olarak makalenin başında bahsettiğimiz hatadır.

Web Sunucusu Seviyesinde Yönlendirme; Daha Güvenilir Alternatif

Yalnızca .htaccess erişimi olan paylaşımlı hosting'de yukarıdaki kural yeterlidir. Ancak özel sunucuda yönlendirmeyi Virtual Host'ta yapın. Apache için:

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

Bu yöntem daha hızlıdır çünkü Apache kuralı .htaccess dosyasını işlemeden önce çalıştırır. Nginx'te de 80 numaralı porttaki server bloğunda aynı şekilde:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

WordPress ve SSL; WP-CONFIG Ayarları ve Yönlendirme Döngüsü

WordPress siteniz varsa, yönlendirme döngüsü oluşturan başka bir katman daha vardır. WordPress site adresini wp_options tablosunda saklar. Bu adres hâlâ http:// ise, WordPress kendisi HTTP'ye bir yönlendirme yapar ve .htaccess kuralınız HTTPS'ye yönlendirirse, iki çelişkili yönlendirme oluşur ve döngü meydana gelir.

Çözüm, site adresini wp-config.php dosyasında belirlemektir. Bu iki satırı /* That's all, stop editing! */ satırından önce ekleyin:

define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');

Bu değişiklikten sonra WordPress panelinden çıkış yapıp tekrar giriş yapın. Beyaz ekran görürseniz, WordPress beyaz ekran giderme rehberini okuyun.

Mixed Content İçerikleri; Yönlendirmenin Çözmediği Şey

HTTPS yönlendirmesi yalnızca tarayıcı isteklerini dönüştürür. Ancak sayfada http:// adresiyle yüklenen bir script veya görsel varsa, tarayıcı bunu engeller. Bu hata tarayıcı konsolunda Mixed Content: The page at 'https://example.com' was loaded over HTTPS, but requested an insecure resource şeklinde görüntülenir.

Bu kaynakları bulmak için çevrimiçi karma içerik tarama araçlarını kullanın veya Google Chrome'da F12 tuşuna basıp Console sekmesini açın. Ardından WordPress veritabanında aşağıdaki sorguyu çalıştırarak tüm HTTP adreslerini bulun:

SELECT * FROM wp_posts WHERE post_content LIKE '%http://example.com%';

wp_posts tablosunda http://example.com adresini https://example.com ile küresel olarak değiştirmek genellikle sorunu çözer. Çalıştırmadan önce mutlaka veritabanı yedeği alın.

HSTS; Belirli Bir Maliyeti Olan Bir Sonraki Güvenlik Katmanı

Doğru yönlendirmeden emin olduktan sonra, HSTS başlığını etkinleştirerek tarayıcının kullanıcıyı doğrudan HTTPS'ye götürmesini sağlayabilir ve tek bir HTTP isteği bile gönderilmesini önleyebilirsiniz. .htaccess dosyasında:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Bu işlemin maliyetini dürüstçe söyleyeyim: SSL sertifikanızın süresi dolarsa ve yenilenmezse, kullanıcılar HTTP adresini yazsalar bile bir yıl boyunca sitenize erişemez. Tarayıcı, HSTS nedeniyle isteği göndermeden önce engeller. İşte burada hata yapılıyor: otomatik yenilemeden emin olmadan HSTS'yi etkinleştiriyorlar ve sertifika süresi dolduğunda, site daha önce ziyaret etmiş tüm kullanıcılar için tamamen erişilemez hale geliyor.

Önerim: önce cron job yenilemesinden emin olun, bir ay bekleyin ve ardından HSTS'yi max-age=86400 (bir gün) ile etkinleştirin. Her şey doğruysa, değeri bir yıla çıkarın.

Son Kontrol ve Hata Ayıklama

Değişiklikleri uyguladıktan sonra, yönlendirmenin doğru çalıştığını şu komutla kontrol edin:

curl -I http://example.com

Çıktı 301 Moved Permanently ve Location: https://example.com/ başlığını içermelidir. 302 kodu görürseniz, yönlendirme geçicidir ve SEO için uygun değildir. HTTP üzerinde 200 kodu görürseniz, yönlendirme kuralı uygulanmamıştır.

DNS'i kontrol etmek ve A ile AAAA kayıtlarının doğru olduğundan emin olmak için DNS ve Ağ Kontrolü aracını kullanın. Siteyi yeni bir alan adına taşıdıysanız, SEO kaybı olmadan site alan adı değiştirme rehberini de okuyun.

Sıkça Sorulan Sorular

SSL kurulumundan sonra sitem neden ERR_TOO_MANY_REDIRECTS hatası veriyor?

Bu hata, bir yönlendirme döngüsü oluştuğu anlamına gelir. Genellikle .htaccess kuralınızda %{HTTPS} off koşulunun olmaması ve tüm isteklerin tekrar HTTPS'ye yönlendirilmesinden kaynaklanır. Doğru kuralı "Döngü Olmadan HTTPS Yönlendirmesi" bölümünden kopyalayıp değiştirin.

Ücretsiz Let's Encrypt SSL sertifikası ne kadar geçerlidir ve nasıl yenilenir?

Let's Encrypt sertifikası 90 gün geçerlidir. Yenileme, certbot renew komutunu çalıştıran cron job ile otomatik olarak yapılır. Çalıştığından emin olmak için sudo certbot renew --dry-run komutunu çalıştırın.

SSL kurulumundan sonra WordPress'te site adresini değiştirmem gerekir mi?

Evet. WordPress ayarlarındaki site adresi hâlâ http:// ise, WordPress HTTP'ye bir yönlendirme oluşturur ve bu, HTTPS yönlendirme kuralıyla çakışır. Adresi genel ayarlarda veya wp-config.php dosyasında WP_HOME ve WP_SITEURL sabitleriyle HTTPS olarak değiştirin.

Sitemin tüm içeriğinin HTTPS'den sunulduğunu nasıl anlarım?

Tarayıcı konsolunu açın ve Network sekmesini inceleyin. http:// ile başlayan her istek Mixed Content'tir ve düzeltilmelidir. WordPress'te, wp_posts tablosunda SQL sorgusuyla tüm HTTP adreslerini bulup değiştirebilirsiniz.

Bu sayfa yardımcı oldu mu?