İçeriğe geç
Approvalens

Okuma odası · 4 dk okuma

cPanel'de www'yi www'siz Adrese Yönlendirme (veya Tersi)

cPanel'de www ve www'siz adres: Yönlendirmeler ekranında doğru www seçeneği, HTTPS'i de zorlayan test edilmiş .htaccess kuralı, iki ad için SSL.

Approvalens ekibi

Şu rapor bulgularını düzeltir

  • www'li ve www'siz adres
  • HTTP'den HTTPS'ye yönlendirme
  • Yönlendirme zinciri
  • HTTPS sertifikası
  • ads.txt yönlendirmesi

cPanel hosting'de ornekblog.com ve www.ornekblog.com genellikle aynı klasörü gösterir, yani ikisi de siteni açar. Bu, her sayfanın iki kopyası demek. Google bu adreslerden birini canonical seçip diğerlerini yönlendirmeyle ona göndermeni istiyor (kopya URL'leri birleştirme). AdSense botu da "site.com ve www.site.com adreslerine ayrı ayrı" erişiyor (AdSense tarayıcısı). cPanel'de bunu düzeltmenin iki yolu var: Yönlendirmeler (Redirects) ekranı ya da .htaccess dosyasına birkaç satır. WordPress sitelerde ikincisi daha güvenilir.

Yönlendirmeden önce: iki ad için de SSL

https://www.ornekblog.com adresini açan bir ziyaretçinin, yönlendirme gerçekleşmeden önce www için geçerli bir sertifikaya ihtiyacı var. Sertifika yoksa tarayıcı güvenlik uyarısı gösterir ve 301'ini hiç görmez.

cPanel'in AutoSSL'i bunu normalde karşılıyor: sertifikaya her alan adı ve alt alan adı için karşılık gelen www. adresini de ekliyor. Ama www. adresi DCV doğrulamasını geçemezse onu güvence altına almaya çalışmıyor (cPanel SSL rehberi). www için DNS kaydı yoksa ya da başka bir yeri gösteriyorsa DCV başarısız olur. O yüzden önce:

  1. Alan Adları → Zone Editor (Domains → Zone Editor) ekranında www için aynı sunucuyu gösteren bir kayıt olduğunu kontrol et (çoğu zaman ana alan adına bir CNAME).
  2. Güvenlik → SSL/TLS Status ekranında hem ornekblog.com hem www.ornekblog.com adresinin kapsandığına bak. www yoksa AutoSSL'i yeniden çalıştır.

A seçeneği: Yönlendirmeler ekranı

Alan Adları → Yönlendirmeler (Domains → Redirects) ekranına git (cPanel Redirects). www'yi çıplak alan adına göndermek için:

Alan Değer
Tür (Type) Kalıcı (Permanent 301)
Alan adı ornekblog.com
Yol boş bırak (/ zaten yazılı)
Yönlendirilecek adres https://ornekblog.com/
www. yönlendirmesi Only redirect with www. (yalnızca www ile gelenleri yönlendir)
Wild Card Redirect işaretli; böylece /sayfa ana sayfaya değil /sayfa adresine gider

Seni döngüden koruyan, www seçeneği. "Redirect with or without www." seçersen ornekblog.com kendisine de yönlenir. cPanel'in üç seçeneği şunlar: "Only redirect with www.", "Redirect with or without www." ve "Do Not Redirect www.". Ters yön için (çıplak → www) Do Not Redirect www. seç ve hedef olarak https://www.ornekblog.com/ yaz.

cPanel'in kendi dokümanındaki iki sınır:

  • cPanel bu kuralları ".htaccess dosyasının en altına" yazıyor ve WordPress gibi bir içerik yönetim sistemi kullanıyorsan yönlendirmenin düzgün çalışmayabileceğini söylüyor. WordPress'in kendi rewrite bloğu üstte durduğu için isteği önce o yakalayabiliyor.
  • Mevcut bir yönlendirme düzenlenemiyor. Değiştirmek için silip yeniden oluşturman gerekiyor.

Bunlardan biri sorun çıkarırsa B seçeneğine geç.

B seçeneği: .htaccess (WordPress ile de çalışır)

Dosyalar → Dosya Yöneticisi'ni (Files → File Manager) aç, Ayarlar'dan Show Hidden Files (dotfiles) seçeneğini işaretle ve sitenin kök klasöründeki (genellikle public_html) .htaccess dosyasını düzenle. Kuralı dosyanın en üstüne, varsa # BEGIN WordPress satırının üstüne koy.

www → çıplak alan adı ve HTTP → HTTPS, tek adımda:

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

çıplak alan adı → www ve HTTP → HTTPS, tek adımda:

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

Bunlar Apache'nin "Canonical Hostnames" tarifinin bizim uyarladığımız hâli (Apache dokümanı). İki değişiklik önemli. Apache örnekleri çıplak [R] kullanıyor ve bu, belirtilmezse varsayılan olan 302'yi gönderiyor (RewriteRule bayrakları). Biz R=301 kullanıyoruz. Ayrıca HTTPS ve alan adı düzeltmesini birleştiriyoruz ki ziyaretçi iki yönlendirmeden geçmesin. Son koşul her zaman eşleşiyor ve www. olmadan alan adını %1 olarak yakalıyor. %{REQUEST_URI} yolu koruyor, sorgu dizesi de kendiliğinden ekleniyor.

İki kuralı da Apache 2.4'te http://ornekblog.com/ads.txt?x=1, http://www.ornekblog.com/ads.txt?x=1 ve daha derin bir yolla test ettik. Her istek, yolu ve sorgu dizesi korunmuş hâlde beklenen HTTPS adresine tek bir 301 döndürdü.

.htaccess kuralının akışı: http ya da https, www'li ya da www'siz istekler üç RewriteCond kontrolünden geçiyor ve tek bir 301 ile https://ornekblog.com artı orijinal yola çıkıyor
Dört sürümün kuraldan nasıl geçtiği. Yalnızca canonical HTTPS adresi doğrudan sunuluyor.

Site Cloudflare arkasındaysa

Cloudflare'in SSL modu Flexible ise Cloudflare sunucunla HTTP üzerinden konuşur. %{HTTPS} her zaman off olur ve yukarıdaki kural sonsuza kadar yönlendirir. Cloudflare dokümanı, sunucu HTTPS'e zorluyorsa Flexible kullanılmamasını söylüyor (Flexible modu). Full (strict) moduna geç ya da yönlendirmeyi Cloudflare'de yap. Nasıl yapılacağı Cloudflare'de www yönlendirme rehberinde. Yönlendirmeyi tek bir yerde kur, ikisinde birden değil.

Force HTTPS Redirect

cPanel'de Alan Adları → Alan Adları (Domains → Domains) altında bir Force HTTPS Redirect anahtarı da var. Geçerli sertifikası olan bir alan adında HTTP'yi HTTPS'e yönlendiriyor (Domains). Kullanmakta sakınca yok, ama ayrı bir www kuralıyla birleşince iki adımlı bir zincir oluşabilir (http://www → https://www → https://). Yukarıdaki .htaccess kuralları ikisini tek adımda yapıyor. Onları kullanıyorsan bu anahtara gerek yok.

WordPress'i de aynı ayara getir

WordPress'te Ayarlar → Genel altında WordPress Adresi (URL) ve Site Adresi (URL) alanları var. İkisi de yönlendirdiğin sürümü kullanmalı. Bu alanlarda https://www.ornekblog.com yazarken .htaccess www'yi siliyorsa WordPress geri yönlendirir ve döngü oluşur. Alanlar griyse değerler wp-config.php içinde WP_HOME ve WP_SITEURL olarak tanımlanmıştır (Genel Ayarlar).

Sonucu kontrol et

for u in http://ornekblog.com http://www.ornekblog.com https://ornekblog.com https://www.ornekblog.com; do
  curl -s -o /dev/null -w "$u  %{http_code}  %{redirect_url}\n" "$u/ads.txt"
done

Dört adresten üçü aynı https:// adresine 301 döndürmeli, canonical olan da 200 vermeli. cPanel dokümanı tarayıcıların yönlendirmeleri önbelleğe aldığı konusunda uyarıyor. Her değişiklikten sonra curl ya da gizli pencereyle test et. Googlebot erişim kontrolü, Google botlarının izlediği yönlendirme yolunu gösteriyor. ads.txt kontrol aracı da dosyanın kök alan adından erişilebilir olduğunu doğruluyor. Google bunu şart koşuyor (ads.txt tarama kuralları).

Dört sürüm de tek adreste bittiğinde ücretsiz taramayı çalıştır. İki adresi ve iki protokolü yeniden test ediyor, bulduğu yönlendirme zincirlerini de listeliyor.

Eskimiş ya da yanlış bir şey mi gördün? Bize yaz, düzeltelim.

Bu rehberi İngilizce oku →

Kendi sitende kontrol et. Ücretsiz, kayıt yok.

Bunun için ücretsiz araçlar

Ücretsiz tarama

Kendi siteni kontrol et

Ücretsiz tarama: uygunluk puanı ve tüm sorunlar, genelde birkaç dakikada.

Ücretsiz tarama · puan ve bulunan tüm sorunlar · üyelik yok

Tüm rehberler →