İçeriğe geç
Approvalens

Okuma odası · 5 dk okuma

Cloudflare'de www ve www'siz Adres Sorunu: Tek 301 Kuralı

Cloudflare'de www'yi www'siz adrese (ya da tersine) yönlendirme: proxy'li DNS kaydı, Redirect Rule, Pages için Bulk Redirects ve dört adresin testi.

Approvalens ekibi

Şu rapor bulgularını düzeltir

  • www'li ve www'siz adres
  • HTTP'den HTTPS'ye yönlendirme
  • Yönlendirme zinciri
  • ads.txt yönlendirmesi
  • Canonical başka sayfayı gösteriyor

Planlasan da planlamasan da sitenin iki adresi var: ornekblog.com ve www.ornekblog.com. Ziyaretçiler ikisini de yazıyor, eski linkler ikisini de gösteriyor ve AdSense botu ikisini ayrı ayrı kontrol ediyor. Yardım sayfası açıkça yazıyor: "Tarayıcımız site.com ve www.site.com adreslerine ayrı ayrı erişir" (AdSense tarayıcısı hakkında). Çözüm her zaman aynı: birini seç, diğerinin de açılmasını sağla ve seçtiğine tek bir 301 yönlendirmesi gönder. Cloudflare'de bunun için bir DNS kaydı ve bir Redirect Rule yeterli.

Atlarsan ne oluyor?

Durum Ziyaretçinin ya da botun gördüğü AdSense açısından önemi
www için DNS kaydı yok Tarayıcı hatası: adres çözümlenmiyor www. yazan biri sitenin kapalı olduğunu düşünüyor
İki adres de sitenin tamamını gösteriyor Birebir aynı iki kopya Kopya URL'ler. Google, bu adreslerden birini canonical seçip diğerlerini yönlendirmeni istiyor (kopya URL'leri birleştirme)
Site www üzerinde, kök alan adı yönlendirmiyor ornekblog.com/ads.txt açılmıyor www'deki ads.txt ancak kök alan adı ona yönlendiriyorsa taranıyor (ads.txt tarama kuralları)
http → https → www → yol, her biri ayrı adım 2–3 yönlendirmelik zincir Daha yavaş, ve her adım bozulabilecek bir nokta daha

Kendi sitelerimizden birinde Approvalens taramasının bulduğu gerçek bir örnek. www adresinin hiç DNS kaydı yoktu:

gunlukrituel.com.tr için Approvalens rapor kartı, "www'li ve www'siz adres" uyarısı: www adresi açılmıyor, bu adresi yazan ziyaretçi hata görüyor; ilk adım "Bir ana sürüm seç: www'li ya da www'siz"
gunlukrituel.com.tr için Approvalens bulgusu. Eksik adresi eklemek ve tek bir yönlendirme kurmak sorunu çözüyor.

1. adım: Asıl sürümü seç

İkisi de olur, Google birini diğerine tercih etmiyor. Canonical etiketlerinde, site haritasında ve AdSense site listesinde zaten kullandığın sürümü seç ki en az şeyi değiştirmen gereksin. Aşağıda asıl sürüm ornekblog.com, www ona yönleniyor. Ters yön 3. adımın sonunda.

2. adım: İki adresin de proxy'li olduğundan emin ol

Cloudflare yalnızca kendisine gelen trafiği yönlendirebilir. Dokümana göre Single Redirects, ziyaretçinin istediği adrese gelen trafiğin Cloudflare üzerinden proxy'lenmesini şart koşuyor (sorun giderme).

Zone'unda DNS → Records sayfasını aç ve kontrol et:

  • ornekblog.com için normal A, AAAA ya da CNAME kaydı var ve turuncu bulut (Proxied) açık.
  • www kaydı var ve Proxied. Yoksa ekle. www → ornekblog.com CNAME kaydı iş görür. Yalnızca yönlendirme yapacak bir adres için Cloudflare'in kendi örneği bir yer tutucu kullanıyor: tür A, ad www, IPv4 192.0.2.1, Proxied (Pages için www yönlendirmesi). Bu adrese hiç gidilmiyor, çünkü yönlendirme önce yanıt veriyor.

Gri bulutlu (DNS only) bir kayıt Cloudflare'i tamamen atlar ve hiçbir kural çalışmaz.

3. adım: Redirect Rule oluştur

Cloudflare bu durumu "Redirect from WWW to root" adıyla belgeliyor (örnek). Panelde Rules → Overview sayfasına git, Create rule → Redirect Rule seç (kural oluşturma). Şablon listesinden başlayabilir ya da alanları kendin doldurabilirsin:

Alan Değer
Rule name www'den köke
When incoming requests match Wildcard pattern
Request URL http*://www.ornekblog.com/*
Then: Target URL https://ornekblog.com/${2}
Status code 301
Preserve query string Açık

Sonra Deploy'a tıkla.

Neden http* ve ${2}? Cloudflare'in örneği https://www.* → https://${1} kullanıyor ve kendi tablosu bu hâliyle www'ye gelen HTTP isteklerinin "değişmeden" kaldığını gösteriyor. Wildcard kalıpları, Cloudflare dokümanındaki gibi iki protokolü birden yakalamak için http*:// kabul ediyor. İki joker karakterle ${1} protokolün sonu, ${2} yol oluyor. Böylece hem http://www. hem https://www. tek adımda https://ornekblog.com/… adresine gidiyor. Güvenmeden önce 5. adımdaki komutlarla test et.

Ters yön (kökten www'ye): Request URL http*://ornekblog.com/*, Target URL https://www.ornekblog.com/${2}.

Dört adres sürümünün şeması: www'li ve www'siz, http ve https; her biri tek bir 301 ile https://ornekblog.com/yol adresine gidiyor; www için DNS kaydı proxy'li olarak işaretli
Dört giriş, tek bir son adres, her biri en fazla tek adımda.

Cloudflare Pages'te: Bulk Redirects

Cloudflare'in Pages rehberi bunun yerine Bulk Redirects kullanıyor (Pages için www yönlendirmesi): kaynağı www.ornekblog.com, hedefi https://ornekblog.com, durum kodu 301 olan bir liste oluştur, Preserve query string, Subpath matching ve Preserve path suffix seçeneklerini aç. Sonra bu listeyi kullanan bir Bulk Redirect kuralı oluştur ve 2. adımdaki proxy'li www kaydını ekle. İki yöntem de çalışıyor. Aynı adres için ikisini birden kullanma. Single Redirects, Bulk Redirects'ten önce çalışıyor.

Bunu Pages'in _redirects dosyasıyla yapmaya çalışma. Orada alan adı düzeyinde yönlendirme desteklenmiyor (redirects).

4. adım: İki klasik döngüden kaçın

  • Flexible SSL ve HTTPS'e zorlayan sunucu. Cloudflare dokümanı açık: sunucun HTTP isteklerini otomatik olarak HTTPS'e yönlendiriyorsa Flexible modu kullanma. Cloudflare sunucuna HTTP ile bağlandığı için bu, siteyi erişilemez kılan bir yönlendirme döngüsü yaratıyor. Bunun yerine Full ya da Full (strict) kullan (Flexible modu). Tarayıcı ERR_TOO_MANY_REDIRECTS gösterir.
  • Cloudflare ile sunucu anlaşamıyor. Cloudflare www'yi köke gönderirken WordPress (Ayarlar → Genel → Site Adresi) ya da sunucun kökü www'ye geri gönderiyorsa ikisi sonsuza kadar birbirine yönlendirir. Sunucuda da aynı asıl sürümü kullan.

Eski, yönlendirme yapan Page Rules kuralların varsa onlara da bak. Cloudflare, Page Rules'u kullanımdan kaldırılıyor olarak işaretliyor. Single Redirects önce çalışıp onları geçersiz kılıyor, yani unutulmuş bir Page Rule genellikle yalnızca kafa karıştırıyor.

5. adım: Dört adresi de test 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

Beklenen sonuç:

İstek Durum Gittiği yer
http://ornekblog.com/ads.txt 301 https://ornekblog.com/ads.txt
http://www.ornekblog.com/ads.txt 301 https://ornekblog.com/ads.txt
https://www.ornekblog.com/ads.txt 301 https://ornekblog.com/ads.txt
https://ornekblog.com/ads.txt 200 (dosyanın kendisi)

İlk satırı bu kural değil, Cloudflare'deki ya da sunucundaki HTTPS yönlendirmesi karşılıyor. Tarayıcılar 301'leri önbelleğe aldığı için curl ya da gizli pencereyle test et. Googlebot erişim kontrolü Google botlarının izlediği yönlendirme yolunu baştan sona gösteriyor. ads.txt kontrol aracı da dosyanın kök alan adından erişilebilir olduğunu doğruluyor.

Yönlendirme çalıştıktan sonra

  • Canonical etiketleri, site haritası ve iç linkler asıl sürümü kullanmalı.
  • AdSense'te siteler alan adı olarak ekleniyor (ornekblog.com). www gibi mevcut bir sitenin alt alan adları ayrıca eklenmiyor (site yönetimi değişiklikleri). İki adres aynı site kaydına ait olduğu için ikisinin de aynı yere çıkması bir sebep daha.
  • cPanel gibi sunucuyu da yönettiğin hosting'lerde aynı yönlendirmeyi orada da kurabilirsin. Nasıl yapılacağını cPanel'de www yönlendirme rehberinde anlattık. Yalnızca tek bir yerde yap.

Ücretsiz Approvalens taraması iki adresi ve iki protokolü test ediyor, yönlendirme zincirlerini de AdSense kontrollerinin geri kalanıyla birlikte raporluyor.

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 →