SSL Sertifikası

Apache .htaccess HTTPS Yönlendirme

Apache .htaccess dosyasına üç satır eklemek siteyi HTTPS'e yönlendirir. Proxy arkasında çalışan sitelerde döngüye düşmemek için ayrıntılar.

Paylaşımlı hosting ve cPanel ortamlarında sunucu yapılandırmasına erişiminiz yoksa HTTPS yönlendirmesini sitenin kök dizinindeki .htaccess dosyasıyla yapabilirsiniz. Bunun için mod_rewrite modülünün etkin olması gerekir; çoğu hosting'de varsayılan olarak açıktır.

Temel kural

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

İlk koşul bağlantı şifresizse kuralı çalıştırır; R=301 kalıcı yönlendirme, L kural işlemeyi sonlandırır.

Belirli bir alan adına ve www'ya sabitleme

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

Bu kural, hem HTTP isteklerini hem de www'lu adresleri tek adımda https://example.com biçimine taşır.

Ters proxy veya CDN arkasında

TLS sonlandırması başka bir katmanda yapılıyorsa Apache %{HTTPS} değerini hep "off" görür ve sonsuz döngü oluşur. Bu durumda proxy'nin gönderdiği başlığa bakın:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Kuralın yerleşimi

  • WordPress gibi sistemlerde kuralı # BEGIN WordPress bloğunun üstüne koyun; yoksa yönlendirme atlanabilir.
  • Değişiklikten önce dosyanın yedeğini alın; sözdizimi hatası sitede 500 hatasına yol açar.
  • Tarayıcı 301'leri önbelleğe aldığı için testleri gizli pencerede veya curl -I ile yapın.

Sık hatalar

  • Too many redirects: Proxy/CDN durumunu veya WordPress'teki site adresini (http/https) kontrol edin.
  • Kural çalışmıyor: Sanal sunucuda AllowOverride değerinin All veya en azından FileInfo olması gerekir.
  • Karışık içerik: Temadaki sabit http:// bağlantılarını güncelleyin.

Ek güvenlik başlığı

Yönlendirme çalıştıktan sonra HSTS eklemek tarayıcıya siteyi yalnızca HTTPS ile açmasını söyler. mod_headers etkinse Header always set Strict-Transport-Security "max-age=31536000" satırı kullanılır. Önce kısa bir süreyle (ör. 300 saniye) deneyin; süre uzadıktan sonra geri dönüş zorlaşır. Alt alan adlarının tamamı HTTPS'e hazır değilse includeSubDomains eklemeyin.

Sertifikanız henüz yoksa SSL sertifikaları sayfasından seçebilir, kurulumdan sonra SSL kontrol aracıyla sonucu doğrulayabilirsiniz.

Bu makale faydalı oldu mu?

Makale Ara

SSL Kurulum ve Yapılandırma

Yardıma mı İhtiyacınız Var?

Aradığınızı bulamadıysanız destek ekibimiz size yardımcı olabilir.

Destek Talebi Aç