HTTP'ten HTTPS'ye Otomatik Yönlendirme: Apache, Nginx, IIS ve Node.js Kodları

Özet: SSL/TLS kurulumu tamamlandıktan sonra HTTP trafiğini kalıcı olarak HTTPS'ye yönlendirmek, güvenlik, SEO ve kullanıcı güveni için zorunludur. Aşağıda Apache (.htaccess), Nginx, IIS (web.config) ve Node.js örnekleri ile uygulama adımlarını bulacaksınız.

Hazırlık: SSL Kurulumu ve Kontroller

  • Önce sunucu veya hosting kontrol panelinizde aktif bir SSL/TLS sertifikası kurulduğundan emin olun.
  • Load balancer, CDN (ör. Cloud) veya proxy arkasında çalışıyorsanız, sertifika ve protokol yönlendirmesinin hangi katmanda yapılacağına karar verin.
  • Test ortamı oluşturun: canlıya geçmeden önce staging üzerinde yönlendirmeyi doğrulayın.

Neden 301 (Kalıcı) Yönlendirme?

301 yönlendirmesi arama motorlarına sayfanın kalıcı olarak yeni HTTPS adresine taşındığını bildirir. Bu, SEO değerinin korunması ve indeksleme problemlerinin önlenmesi açısından kritik öneme sahiptir.

Sunucu Bazlı Yönlendirme Örnekleri

Aşağıdaki örnekler en yaygın sunucu ve platformlar için uygulanabilir kodlardır. Kendi yapılandırmanıza göre domain, paket ya da ek kurallar (örn. www yönlendirmesi) ekleyin.

Apache (.htaccess) — Basit ve Yaygın

Web siteniz Apache üzerinde çalışıyorsa, ana dizindeki .htaccess dosyasının en üstüne aşağıdaki kodu ekleyin:

RewriteEngine On
# Eğer HTTPS değilse, HTTPS'ye yönlendir
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Nginx — Server Block Yönlendirmesi

Nginx kullanıyorsanız, 80 portunu dinleyen server bloğunda tüm trafiği HTTPS'ye yönlendirebilirsiniz:

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

IIS (Windows) — web.config ile URL Rewrite

IIS üzerinde URL Rewrite modülü varsa, site kökünde yer alan web.config dosyasına şu kuralı ekleyebilirsiniz:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Node.js (Express) — Uygulama Katmanında Yönlendirme

Proxy veya doğrudan Node üzerinde çalışıyorsanız, Express içinde basit bir middleware ile yönlendirme yapabilirsiniz:

app.use(function(req, res, next) {
  // Proxy/Load Balancer arkasında X-Forwarded-Proto kontrolü önemlidir
  if (req.secure || req.headers['x-forwarded-proto'] === 'https') {
    return next();
  }
  res.redirect(301, 'https://' + req.headers.host + req.url);
});

Ek Güvenlik: HSTS ve Başlıklar

HSTS (HTTP Strict Transport Security), tarayıcılara sitenize yalnızca HTTPS üzerinden bağlanmaları gerektiğini bildirir. Ancak HSTS uygulanmadan önce tüm subdomain'lerin ve CDN/hosting yapılandırmalarının HTTPS uyumlu olduğundan emin olun.

# Nginx örneği
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# Apache örneği (mod_headers aktif olmalı)
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

SEO, Test ve Devreye Alma Kontrolleri

  • Curl ile test: curl -I http://example.com -> 301 Location: https://...
  • Mixed content taraması: HTTPS'ye geçiş sonrası sayfalarda HTTP ile çağrılan kaynak kalmadığını doğrulayın.
  • Sitemap & canonical: Sitemap'ları HTTPS adresleriyle güncelleyin; canonical etiketlerin HTTPS'yi işaret ettiğinden emin olun.
  • Arama konsolları: Google Search Console ve Bing Webmaster araçlarına HTTPS mülkünü ekleyin ve doğrulayın.
  • CDN/Load Balancer: SSL offloading varsa, yönlendirme katmanını doğru yere koyun (ör. load balancer'da yönlendirme daha etkili olabilir).
  • Geri dönüş planı: Yönlendirme uygulanmadan önce yedek alın ve hızlı rollback yöntemi planlayın.

Hızlı Kontrol Komutları

# HTTP isteğine verilen yanıt başlıklarını kontrol et
curl -I http://example.com

# HTTPS'ye otomatik yönleniyor mu?
curl -I -L http://example.com

Sonuç

HTTP'den HTTPS'ye otomatik yönlendirme, sadece bir güvenlik gerekliliği değil aynı zamanda SEO ve kullanıcı deneyimi açısından da kritik bir uygulamadır. Doğru adımlar: SSL kurulumunu doğrulamak, uygun sunucu tarafı yönlendirmesini eklemek (301) ve HSTS ile ekstra güvenlik katmanı sağlamaktır. Yayına almadan önce staging testleri, mixed-content taramaları ve arama motoru araçlarında güncellemeleri unutmayın. Bu süreç, sürdürülebilir ve güvenli bir web varlığı için temel bir adımdır.