Canonical ve Yönlendirme: Lighthouse'ın Görmediği SEO Hatası
Sitemin Lighthouse SEO puanı 100'dü. Buna rağmen her sayfanın canonical adresi, Google'ı başka bir adrese yönlendiriyordu.
Sorun Neydi?
Sayfalarda canonical etiketi www'suz adresi gösteriyordu:
<link rel="canonical" href="https://omergulcicek.com/blog" />Vercel'de ise ana alan adı www.omergulcicek.com seçiliydi. Yani canonical'daki adres açılmıyor, www'ya yönleniyordu:
curl -I https://omergulcicek.com/blog
# HTTP/2 308
# location: https://www.omergulcicek.com/blogGoogle'a "asıl adres A" diyordum, A'ya gelince de onu B'ye gönderiyordum. Sitemap, robots.txt ve yapılandırılmış veri de A'yı gösteriyordu.
Google İçin Ne Anlama Geliyor?
Canonical bir emir değil, ipucu. Yönlendirme ise daha güçlü bir sinyal. İkisi çeliştiğinde Google hangi adresi indeksleyeceğine kendisi karar veriyor.
Bu yüzden sitem indeksten düşmedi, puanım da değişmedi. Ufak bir dikkatsizlikti, ama şunlara sebep oluyordu:
- Asıl adresi ben değil Google seçiyordu.
- Link değeri iki adres arasında bölünebiliyordu.
- Search Console bu durumda "Google, kullanıcıdan farklı bir standart sayfa seçti" uyarısı verebiliyor.
307 mi, 308 mi?
Vercel'de yönü çevirdiğimde ilk ayarda 307 seçili kalmıştı. Fark küçük görünüyor ama anlamı farklı:
| Kod | Anlamı | Ne zaman |
|---|---|---|
| 301 | Kalıcı taşındı | Eski, yaygın kalıcı yönlendirme |
| 307 | Geçici taşındı, metot korunur | Bakım, deneme, A/B testi |
| 308 | Kalıcı taşındı, metot korunur | Alan adı ve adres değişikliği |
Geçici yönlendirmede Google eski adresi hatırlamaya devam ediyor. Alan adı tercihi kalıcı bir karar, bu yüzden doğru kod 308.
Nasıl Düzelttim?
Kodda hiçbir şey değiştirmedim. Kodun tamamı zaten www'suz adresi kullanıyordu, ben de Vercel'i ona uydurdum:
- Settings → Domains bölümünde
omergulcicek.com'u ana alan adı yaptım. www.omergulcicek.comiçin yönlendirmeyi 308 Permanent Redirect olarak seçtim.

curl -I https://www.omergulcicek.com/blog
# HTTP/2 308
# location: https://omergulcicek.com/blogLighthouse etiketin var olup olmadığına bakıyor, gösterdiği adresin açılıp açılmadığına bakmıyor. Canonical'a yazdığın adresi bir kez curl -I ile kontrol etmen yeterli.