Hosting Paketlerinde %80 indirim + Ücretsiz Domain & SSL!
Detaylar

Bilgi Bankası

HTTPS ve www yönlendirmesi: .htaccess örnekleri

Kısaca: Sitenizi tek bir adreste toplamak için .htaccess dosyasının en üstüne, hem HTTPS'e zorlayan hem de www'li ya da www'siz biçime yönlendiren tek bir 301 kuralı yazın. Kuralı eklemeden önce SSL sertifikasının etkin olduğundan ve uygulamanızın (ör. WordPress) site adresinin aynı biçimi kullandığından emin olun; aksi hâlde ERR_TOO_MANY_REDIRECTS döngüsü oluşur.

Başlamadan önce

  • SSL etkin olmalı. https://alanadiniz.com ve https://www.alanadiniz.com uyarısız açılmalıdır. Durumu cPanel'deki SSL/TLS Durumu (SSL/TLS Status) sayfasından kontrol edin. Sertifika yokken HTTPS'e yönlendirme yapmak ziyaretçilere güvenlik uyarısı gösterir.
  • Tek bir biçim seçin. www'li ya da www'siz adres arasında teknik bir üstünlük yoktur; önemli olan birini seçip her yerde (uygulama ayarları, Search Console, bağlantılar) aynı biçimi kullanmaktır.
  • Dosyayı yedekleyin. .htaccess, public_html içindeki gizli bir dosyadır. Dosya Yöneticisinde Ayarlar (Settings) düğmesinden gizli dosyaları gösterip düzenlemeden önce bir kopyasını alın.
AutoSSL akışı: alan adının A kaydıyla sunucuya yönlendirilmesi, doğrulama, Let's Encrypt sertifikasının verilmesi ve süresi dolmadan otomatik yenilenmesi; engeller olarak başka IP'ye giden A kaydı, CAA kaydı ve vekil sunucu
HTTPS yönlendirmesi, AutoSSL sertifikası alan adının iki biçimi için de etkin olduktan sonra eklenmelidir.

Sunucularımızdaki LiteSpeed web sunucusu, Apache'nin mod_rewrite kurallarını .htaccess dosyasından okur; değişiklik kaydedildiği anda geçerli olur. Yalnız HTTPS yönlendirmesi istiyorsanız cPanel'deki Alan Adları (Domains) sayfasında bulunan Force HTTPS Redirect (HTTPS yönlendirmesini zorla) anahtarı da yeterlidir. www tercihiniz de varsa aşağıdaki kurallardan birini kullanıp bu anahtarı kapalı bırakın; böylece ziyaretçi tek adımda doğru adrese gider.

Kural örnekleri

Kuralları .htaccess dosyasının en üstüne, varsa # BEGIN WordPress satırının üstüne ekleyin. WordPress kendi işaretleri arasındaki bölümü zaman zaman yeniden yazar; oraya eklenen kurallar kaybolabilir. Örneklerdeki alanadiniz adını kendi alan adınızla değiştirin; koşul satırlarında noktanın önündeki ters eğik çizgiyi (\.) koruyun.

HTTPS ve www'li adres (birleşik kural)

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well-known/
RewriteCond %{HTTP_HOST} ^(www\.)?alanadiniz\.com$ [NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^alanadiniz\.com$ [NC]
RewriteRule ^ https://www.alanadiniz.com%{REQUEST_URI} [L,R=301]

HTTPS ve www'siz adres (birleşik kural)

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well-known/
RewriteCond %{HTTP_HOST} ^(www\.)?alanadiniz\.com$ [NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://alanadiniz.com%{REQUEST_URI} [L,R=301]
SatırNe yapar
!^/\.well-known/SSL doğrulama dosyalarını yönlendirmenin dışında tutar; AutoSSL yenilemelerinin takılmasını önler
^(www\.)?alanadiniz\.com$Kuralı yalnız bu alan adına uygular. public_html altındaki ek alan adları ve alt alan adları yanlışlıkla ana siteye yönlenmez
%{HTTPS} off [OR] ve sonraki satırİstek HTTPS değilse ya da adres istenmeyen biçimdeyse yönlendirir
[L,R=301]Kalıcı (301) yönlendirme yapar ve kural işlemeyi bitirir. Sayfa yolu ve ?sayfa=2 gibi sorgu dizesi korunur

Hangi biçimde gelirse gelsin (http://, http://www., https:// veya https://www.) ziyaretçi tek bir yönlendirmeyle doğru adrese ulaşır. Yalnız HTTPS'e zorlamak, www'ye dokunmamak isterseniz şu kısa kural yeterlidir:

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

İpucu: Tarayıcılar 301 yönlendirmesini uzun süre önbellekte tutar; hatalı bir kural, düzeltildikten sonra bile sizin tarayıcınızda çalışmaya devam edebilir. Kuralı denerken R=301 yerine R=302 yazın, doğru çalıştığını görünce 301'e çevirin.

Kuralı test etme

Komut İstemi'nde (Windows 10 ve üstünde curl yüklü gelir) veya Terminal'de yanıt başlıklarına bakın:

curl -I http://alanadiniz.com/iletisim

HTTP/1.1 301 Moved Permanently
Location: https://www.alanadiniz.com/iletisim

Dört biçimin dördünü de deneyin. Her biri en fazla bir 301 ile son adrese gitmeli, son adres de 200 yanıtı vermelidir. Bir adres önce başka bir ara adrese, oradan son adrese gidiyorsa iki ayrı kural ya da eklenti çakışıyordur.

ERR_TOO_MANY_REDIRECTS döngüsü

Tarayıcı "çok fazla yönlendirme" hatası veriyorsa iki kural birbirini geri çeviriyordur. Siteye hiç girilemiyorsa önce .htaccess'teki yeni satırların başına # koyarak onları devre dışı bırakın, sonra nedeni arayın:

NedenNasıl anlaşılırÇözüm
Uygulama ayarı ters yöndeWordPress'te Ayarlar → Genel sayfasındaki WordPress Adresi (URL) ve Site Adresi (URL) www'siz, .htaccess ise www'ye yönlendiriyor (ya da tersi)İki ayarı da .htaccess ile aynı biçime, https:// ile başlayacak şekilde getirin
Vekil sunucuda (ör. Cloudflare) "Flexible" SSLZiyaretçi vekile HTTPS ile, vekil sunucumuza HTTP ile bağlanır; sunucu isteği hep HTTP görüp yönlendirirVekildeki SSL kipini "Full (strict)" yapın; sunucumuzda geçerli AutoSSL sertifikası olduğu için bu kip sorunsuz çalışır
Birden fazla yönlendirme kaynağıSSL veya yönlendirme eklentisi, Force HTTPS Redirect anahtarı ve .htaccess kuralı farklı biçimleri hedefliyorYalnız birini bırakın; tercihen .htaccess kuralını
Düzelttiniz ama hata sürüyorTarayıcı eski 301 yanıtını ve çerezleri önbellekte tutuyorGizli pencerede veya curl -I ile deneyin; site çerezlerini ve önbelleği temizleyin

Aradığınızı bulamadınız mı?

Destek ekibimiz yardımcı olsun; taleplere en geç 24 saat içinde ilk yanıt veriyoruz.

Destek talebi oluşturun
Bu makale işinize yaradı mı?

1 defa görüntülendi | 0 kişi faydalı buldu

0850 532 67 10 908505326710