HTTPS Yönlendirmesi Neden Hayati Önem Taşır?
Sunucunuza SSL sertifikası kurduğunuzda, işin sadece yarısını yapmış olursunuz. Bir kullanıcı sitenizin adresini http:// ile girdiğinde veya arama motorlarında eski bir bağlantı kaldığında, tarayıcı önce isteği 80 numaralı bağlantı noktasına (HTTP) gönderir. HTTPS yönlendirmesi olmadan, kullanıcı ya bir güvenlik hatası görür ya da en iyi ihtimalle güvenli olmayan içerik yüklenir. Bu durum, kötü kullanıcı deneyiminin yanı sıra sitenizin SEO'suna ve alan adı itibarına da zarar verir.
HTTPS yönlendirmesi, HTTP protokolü üzerinden gelen tüm trafiği güvenli sürüme (HTTPS) yönlendirmek anlamına gelir. Bu işlem, hızlı, istikrarlı ve uygulama kodlarından bağımsız olması için sunucu seviyesinde yapılmalıdır. Bu makalede iki ana yöntemi inceleyeceğiz: .htaccess dosyasıyla Apache sunucuları ve yapılandırma dosyasıyla Nginx sunucuları. Ayrıca bu sürecin en yaygın sorunu olan yönlendirme döngüsünün kökenini de araştıracağız.
Birinci Yöntem: Apache'de htaccess ile HTTPS Yönlendirmesi
Hosting'iniz Apache kullanıyorsa (çoğu paylaşımlı hosting), .htaccess dosyası sitenizin genel dizininin kökünde bulunur. Bu dosya yoksa, oluşturun. Ardından aşağıdaki kodu dosyanın başına (varsa RewriteEngine On satırından sonra) ekleyin:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Bu üç satır ne yapar?
- RewriteCond %{HTTPS} off – Koşulu yalnızca HTTPS protokolüne sahip olmayan istekler için etkinleştirir.
- RewriteRule – İstek adresini alır ve aynı ana bilgisayar ve yol ile güvenli sürüme yönlendirir.
- R=301 – SEO için gerekli olan 301 durum kodunu (kalıcı taşıma) döndürür.
Siteniz belirli bir alan adında çalışıyorsa ve yalnızca o alan adını yönlendirmek istiyorsanız, koşulu daha da netleştirin:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [L,R=301]
Bu durumda, kullanıcı www ile girerse, HTTPS'de www olmayan sürüme yönlendirileceğini unutmayın. Bu, alan adını birleştirmeye yardımcı olur.
Önemli Not: htaccess'te Kural Sırası
RewriteRule kuralları yazıldıkları sıraya göre çalıştırılır. Dosyanın alt kısmında adresleri yeniden yazan başka bir kural varsa, HTTPS yönlendirme kuralının ilk sırada olduğundan emin olun. Aksi takdirde, dahili yönlendirmelerinizi etkisiz hale getirebilir veya bir döngü oluşturabilir.
İkinci Yöntem: Nginx'te HTTPS Yönlendirmesi
Nginx kullanıyorsanız, sitenin yapılandırma dosyası genellikle /etc/nginx/sites-available/ dizininde bulunur. Yönlendirme için, tüm istekleri 443 numaralı bağlantı noktasına yönlendiren 80 numaralı bağlantı noktası için ayrı bir server bloğu tanımlamanız gerekir. Standart örnek:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
Bu bloğu ana HTTPS bloğunun öncesine yerleştirin. Ana bloğunuz şu şekilde olmalıdır:
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/html;
index index.php index.html;
# Sitenin diğer ayarları
}
Nginx'teki return 301 komutu rewrite'ten çok daha verimlidir ve sunucuya daha az yük bindirir. Daha karmaşık bir mantığa ihtiyacınız varsa rewrite kullanabilirsiniz, ancak basit yönlendirme için return en iyi seçimdir.
Nginx Yapılandırmasını Test Etme
Değişiklikleri uyguladıktan sonra her zaman yapılandırmayı test edin:
sudo nginx -t
Hata yoksa, servisi yeniden başlatın:
sudo systemctl reload nginx
Yaygın Sorun: Yönlendirme Döngüsü (Redirect Loop)
En sinir bozucu hatalardan biri, tarayıcının "Bu sayfa çok fazla yönlendirme yapıyor" mesajını veya ERR_TOO_MANY_REDIRECTS göstermesidir. Bu sorun genellikle aşağıdaki nedenlerden biriyle oluşur:
1. Uygulama Kodunda Tekrarlanan Yönlendirme
Siteniz WordPress, Laravel veya başka bir çerçeve ile oluşturulduysa ve kodunda da HTTPS'ye yönlendirme varsa, iki yönlendirme art arda çalışarak döngü oluşturabilir. Çözüm: Yalnızca bir yönlendirme katmanına sahip olun. Yönlendirme sunucuda yapılıyorsa, uygulama kodunu kontrol edin ve fazladan yönlendirmeyi kaldırın.
2. WordPress'te Eksik Ayarlar
WordPress'te, sitenin adresi ayarlarda (Genel Ayarlar) hâlâ http:// ise, yönlendirme döngüsü oluşur. Yönetim paneline gidin ve hem "WordPress Adresi" hem de "Site Adresi" alanlarını https:// ile başlatın. Yönetim paneline erişiminiz yoksa, wp-config.php dosyasına şu satırları ekleyin:
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');
3. CDN veya Proxy'de Zincirleme Yönlendirmeler
Cloudflare veya benzeri bir hizmet kullanıyorsanız, CDN panelinde SSL modunun "Full" veya "Full (strict)" olarak ayarlandığından emin olun. "Flexible" modu, CDN'nin sunucunuzla HTTP üzerinden iletişim kurmasına neden olur ve sunucu da HTTPS'ye yönlendirme yaparsa döngü oluşur.
4. htaccess'te Hatalı Kural
Bazı eski kodlar RewriteCond %{SERVER_PORT} !^443$ kullanır. Sunucunuz bir proxy veya yük dengeleyicinin arkasındaysa, bu koşul her zaman doğru olabilir ve döngü oluşturabilir. Daha güvenli yöntem, çoğu ortamda çalışan %{HTTPS} off kullanmaktır.
Kontrol ve Sorun Giderme Araçları
Yönlendirmeyi uyguladıktan sonra sonucu mutlaka kontrol edin. Birkaç basit yöntem:
- Tarayıcıda
http://example.comadresini girin vehttps://example.comadresine yönlendirilip yönlendirilmediğinize bakın. - Yönlendirme zincirini görmek için Redirect Checker gibi çevrimiçi bir araç kullanın. Art arda birden fazla 301 yönlendirmesi varsa, optimize edilecek bir yer var demektir.
- Terminalde
curlkomutuyla HTTP başlıklarını kontrol edin:
curl -I http://example.com
Çıktı, HTTP/1.1 301 Moved Permanently satırını ve Location: https://example.com/ başlığını içermelidir.
Sorunsuz Geçiş İçin Ek İpuçları
Dahili Bağlantıları Güncelleme
Sunucu yönlendirmesi yalnızca gelen trafiği yönetir. Ancak sitenizde hâlâ http:// ile yazılmış dahili bağlantılar, ekstra isteklere ve yavaşlamaya neden olur. Veritabanında veya site şablonunda tüm bağlantıları https:// olarak değiştirin. WordPress'te "Better Search Replace" gibi eklentiler kullanabilirsiniz.
Google Search Console'a Alan Adı Kaydı
Geçişten sonra sitenin HTTPS sürümünü Search Console'a yeni bir "özellik" olarak ekleyin ve yeniden dizine ekleme talebinde bulunun. Bu, Google'ın değişikliği daha hızlı fark etmesine yardımcı olur.
HSTS'yi Etkinleştirme
Tarayıcıların her zaman otomatik olarak HTTPS kullanmasını istiyorsanız, HSTS başlığını etkinleştirin. Nginx'te:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Apache'de, bu satırı yapılandırma dosyasına veya htaccess'e ekleyin:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Yalnızca tüm alt alan adlarının da HTTPS'ye sahip olduğundan emin olduğunuzda HSTS'yi etkinleştirin; aksi takdirde kullanıcılar alt alan adlarının HTTP sürümüne erişemez.
Özet
HTTPS yönlendirmesi, SSL sertifikası kurmuş her site için zorunlu bir adımdır. Bu makalede açıklanan iki basit yöntemle tüm HTTP trafiğini güvenli sürüme yönlendirebilirsiniz. En önemli nokta, değişiklikleri uyguladıktan sonra mutlaka test etmeniz ve bir yönlendirme döngüsüyle karşılaşırsanız önce WordPress ayarlarını, ardından CDN'yi ve son olarak sunucu kurallarını kontrol etmenizdir.
SSL kurulumu veya sitenizi HTTPS'ye taşıma konusunda yardıma ihtiyacınız varsa, ServerNet destek ekibi size uygun hizmeti seçme ve yapılandırma konusunda rehberlik edebilir. Ancak unutmayın ki yönlendirme, hosting türünden bağımsız olarak, bu makaledeki bilgilerle kendiniz yapabileceğiniz teknik bir iştir.
Yorumlar 0
Henüz yorum yok — ilk siz olun!