← Bloga dönRehberler

www'lu mu www'suz mu? Site www Olmadan Açılmıyorsa Ne Yapmalı

www'lu ve www'suz alan adı SEO'da eşittir. Farklar: kökte CNAME yasağı, çerez kapsamı, HSTS ve sertifika. Site www olmadan açılmıyorsa nedenleri ve çözümü.

Yayınlanma: · 6 dk okuma

Kısa yanıt: SEO açısından ikisi de aynıdır. www.example.com ile example.com, aynı siteyi gösteren iki ayrı sunucu adıdır ve arama motorları hangisini asıl adres (canonical) olarak bildirirseniz onu esas alır. Önemli olan birini seçmek, diğerini 301 ile ona yönlendirmek ve ikisinin de gerçekten yanıt vermesini sağlamaktır. Seçimin birkaç teknik sonucu vardır (DNS, çerezler, HSTS, sertifika); bu yazı onları ve en sık gelen destek talebini anlatıyor: "site www olmadan açılmıyor".

İki ayrı ad, tek site değil

DNS'in gözünde example.com (kök alan adı; çıplak alan adı ya da apex de denir) ile www.example.com (sıradan bir alt alan adı) birbirinden bağımsız adlardır. Her birinin kendi DNS kaydı, web sunucusu yapılandırmasında kendi satırı ve sertifikada kendi yeri olmalıdır. Kök çalışıyor diye www kendiliğinden çalışmaz; tersi de geçerlidir.

$ dig +short example.com A
192.0.2.10
$ dig +short www.example.com
edge.cdn.example.
203.0.113.20

DNS farkı: kök alan adına CNAME konamaz

CNAME kaydı "bu ad bir takma addır, her şey için şuraya bak" der. Bu yüzden DNS standartları (RFC 1034, RFC 2181'de netleştirildi) CNAME'in aynı adda başka bir kayıtla birlikte bulunmasına izin vermez. Zone'un kökünde ise her zaman SOA ve NS kayıtları vardır; dolayısıyla kök alan adında CNAME geçerli değildir. Bazı paneller bunu reddeder; bazıları kabul eder ve ortaya e-postayı öngörülemez biçimde bozan bir zone çıkar.

www için böyle bir kısıt yoktur. Bu önemlidir, çünkü CDN'ler, PaaS platformları ve hazır site altyapıları genellikle kendi sunucu adlarına CNAME vermenizi ister; böylece arkadaki IP adreslerini sizin zone'unuza dokunmadan değiştirebilirler.

Kök alan adı için üç seçeneğiniz var:

Seçenek Nasıl çalışır Bedeli
Düz A / AAAA kaydı Sağlayıcının sabit IP adreslerini girersiniz Sağlayıcı adres değiştirirse siz de güncellemek zorundasınız
ALIAS / ANAME / "CNAME flattening" DNS sağlayıcınız hedefi kendisi çözümler ve A/AAAA kaydıyla yanıt verir Standart bir kayıt türü değil, sağlayıcıya özgü bir özelliktir; adı ve davranışı firmadan firmaya değişir
Kök yalnızca yönlendirir Kök, küçük bir yönlendirme hizmetine gider; asıl site www üzerindedir Çalışır durumda tutulacak ve sertifikası olacak bir bileşen daha

DNS yanıtlarında ALIAS diye bir kayıt hiç görünmez: sağlayıcının nameserver'ı hedefi sizin yerinize sorgular ve sıradan adres kayıtları döndürür. Zone'u bu özelliği olmayan bir sağlayıcıya taşırsanız kayıt sizinle birlikte taşınamaz.

www lehine en somut gerekçe budur: her DNS sağlayıcısında gerçek bir CNAME olabilir.

Çerezler

İkinci gerçek fark çerez kapsamıdır.

  • Domain=example.com ile yazılan çerez example.com adresine ve bütün alt alan adlarına gönderilir: www, static, api, blog, hepsine.
  • Domain özniteliği olmadan yazılan çerez yalnızca o sunucu adına aittir (host-only). www.example.com üzerinde yazıldıysa yalnızca www.example.com adresine geri gider.

Asıl adres www ise oturum çerezlerini www üzerinde host-only tutabilir, görselleri ve statik dosyaları static.example.com üzerinden hiç çerez taşımadan sunabilirsiniz. Asıl adres kök alan adıysa host-only çerezler yine yerinde kalır. Tuzak, Domain=example.com taşıyan çerezlerdir (birçok analitik ve çerez onayı betiği böyle yazar): bunlar, CNAME ile üçüncü taraflara yönlendirdikleriniz dahil bütün alt alan adlarına gönderilir.

301 yönlendirme: tek adım, kalıcı, yol korunarak

Kaybeden ad, her isteği kazanan addaki aynı yola kalıcı olarak yönlendirmelidir:

$ curl -sI http://example.com/fiyatlar?plan=pro
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/fiyatlar?plan=pro

$ curl -sI https://www.example.com
HTTP/2 200

Sonradan baş ağrıtmayan kurallar:

  1. 301 kullanın (ya da istek yöntemini de koruyan 308). 302, taşınmanın geçici olduğunu söyler.
  2. Yolu ve sorgu dizesini koruyun. Her şeyi ana sayfaya yönlendirmek derin bağlantıları çöpe atar.
  3. Tek adım hedefleyin: http://example.com/x doğrudan https://www.example.com/x adresine gitsin; http → https → www zinciri kurmayın. Tek istisna aşağıda anlatılan HSTS preload'dur: orada HTTP → HTTPS adımının önce aynı sunucu adında yapılması şarttır.
  4. Aynı tercihi her yere yazın: rel="canonical", site içi bağlantılar ve site haritası.
  5. Google Search Console'da Domain (alan adı) mülkü iki adı ve iki protokolü birlikte kapsar; ayrı ayrı doğrulamanız gerekmez.

Yönlendirme kontrol aracı zinciri adım adım izler.

HSTS

HSTS bir yanıt başlığıdır ve başlığı gönderen sunucu adı için geçerlidir. includeSubDomains ile kök alan adının gönderdiği başlık, alan adının bütün alt alan adlarını kapsar. Açmadan önce, unutulmuş intranet sunucusu dahil her alt alan adının gerçekten HTTPS sunduğundan emin olun.

Gözden kaçan iki ayrıntı:

  • Asıl adres www ise ve kök yalnızca yönlendiriyorsa tarayıcı kökün politikasını ancak köke HTTPS ile geldiğinde görür. HSTS başlığını yalnızca www üzerinde değil, kökün yönlendirme yanıtında da gönderin.
  • Tarayıcıların preload listesinin kök alan adı için kendi koşulları vardır: geçerli bir sertifika, aynı sunucu adında HTTP → HTTPS yönlendirmesi ve max-age değeri en az 31536000 saniye olan, includeSubDomains ve preload içeren bir HSTS başlığı. Listeden çıkmak yavaştır; preload'u geri dönüşü zor bir karar sayın.

Sertifika

Sertifika iki adı da SAN (subject alternative name) olarak içermelidir. En sık unutulan nokta budur, çünkü kaybeden addaki yönlendirme ancak o addaki TLS el sıkışması başarıyla tamamlandıktan sonra gönderilebilir. example.com için geçerli sertifika yoksa ziyaretçi yönlendirme değil, tarayıcı uyarısı görür.

Joker sertifika da kurtarmaz: *.example.com, www.example.com adını kapsar ama example.com adını kapsamaz. Bu yüzden joker sertifikalarda genellikle hem *.example.com hem example.com yer alır.

$ openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
    | openssl x509 -noout -ext subjectAltName
X509v3 Subject Alternative Name:
    DNS:example.com, DNS:www.example.com

Komutu iki ad için ayrı ayrı çalıştırın (-connect ve -servername değerlerini birlikte değiştirerek) ya da sunucunun sunduğu TLS sertifikasının kapsadığı adları listeleyen SSL kontrol aracını kullanın.

"Site www olmadan açılmıyor": nedenleri

Katmanları sırayla kontrol edin:

example.com üzerindeki belirti Olası neden Kontrol
Ad çözümlenmiyor, tarayıcı sunucuyu bulamadığını söylüyor Kökte A/AAAA kaydı yok, yalnızca www oluşturulmuş dig +short example.com A ve AAAA
Hosting firmasının varsayılan sayfası ya da başka bir site açılıyor Web sunucusunda çıplak alan adı için sanal sunucu (vhost) tanımı yok curl -sI http://example.com, ardından vhost / server_name / paneldeki alan adı listesi
https:// sertifika uyarısı veriyor, http:// düzgün yönleniyor Sertifikada çıplak ad yok yukarıdaki openssl komutu
http:// çalışıyor, https:// zaman aşımına uğruyor ya da hata veriyor CDN ya da yük dengeleyicide kök alan adı tanımlı değil; HTTPS yalnızca www için sunuluyor sağlayıcıdaki sunucu adı listesi; curl -sI https://example.com
Yönlendirme döngüsü Kaynak sunucu bir ada, CDN ya da bir eklenti geri diğerine yönlendiriyor curl -sIL https://example.com ve her Location satırı

Tersi durumda (çıplak alan adı açılıyor, www açılmıyor) nedenler aynıdır, adlar yer değiştirir: www kaydı eksiktir, vhost'ta takma ad yoktur ya da sertifika yalnızca kök için alınmıştır.

Kendi bilgisayarınızdan yanıt alamamanız eskimiş bir negatif önbellekten de kaynaklanabilir; bkz. DNS TTL nedir.

Sık yapılan hatalar

  • Hosting talimatında "CNAME ekleyin" yazıyor diye kök alan adına CNAME koymak ve MX kayıtlarını bozmak.
  • Sertifikayı tek ad için almak. Yönlendirme, sertifika hatasının arkasında kalır.
  • 302 ile yönlendirmek ya da bütün yolları ana sayfaya göndermek.
  • Alt alan adlarında ne çalıştığına bakmadan includeSubDomains açmak.
  • İki adın da siteyi 200 ile sunmasına izin verip yalnızca rel="canonical" etiketine güvenmek.

Peki hangisi?

  • CNAME isteyen bir CDN ya da platform kullanıyorsanız (ya da bir gün kullanabilecekseniz) veya site ile diğer alt alan adları arasında temiz bir çerez ayrımı istiyorsanız www seçin.
  • Kısa adı tercih ediyorsanız ve DNS sağlayıcınız ALIAS/flattening sunuyorsa ya da hosting firmanız sabit IP veriyorsa kök alan adını seçin.
  • Site zaten yayındaysa dizine eklenmiş olanı koruyun, yönlendirmeleri düzeltin.

Bir bölümün ayrı bir sunucu adında durup durmaması gerektiğini merak ediyorsanız alt alan adı mı alt klasör mü yazısına, burada geçen kayıt türleri için DNS kayıt türleri yazısına bakın.

OrbitProbe ile kontrol edin

OrbitProbe DNS sorgulama aracını bir kez example.com, bir kez www.example.com için çalıştırın. A, AAAA ve CNAME kayıtlarını TTL değerleriyle, herkese açık çözümleyicilerin o anda döndürdüğü haliyle gösterir; iki addan birinin adresi olmadığını ya da www adının sağlayıcınıza CNAME olup olmadığını hemen görürsünüz. İki ad da çözümleniyorsa ve sorun sürüyorsa yönlendirme zincirine ve sertifikadaki adlara geçin.