İçeriğe geç
Approvalens

Okuma odası · 7 dk okuma

Canonical Etiketi Sorunları: Yanlış, Eksik, Çift ya da http://

Canonical etiketin neden ana sayfayı, başka alan adını ya da ölü bir adresi gösteriyor; bir dakikada kontrol et, WordPress, Blogger ve Next.js'te düzelt.

Approvalens ekibi

Şu rapor bulgularını düzeltir

  • Canonical başka sayfayı gösteriyor
  • Canonical başka siteyi gösteriyor
  • Canonical sorunlu bir sayfayı gösteriyor
  • Canonical http:// kullanıyor
  • Canonical etiketi yok
  • Birden fazla canonical etiketi

Canonical etiketi, Google'a bir sayfanın ana sürümü olarak hangi adresi gördüğünü söyler. Normal bir yazıda yazının kendi son https:// adresini göstermelidir. Başka bir yeri gösterdiğinde Google'a "bu sayfa kopya, ötekini göster" demiş olursun ve yazın sonuçlardan düşebilir. Bozuk canonical'ların çoğu bir temada, layout'ta ya da eklentide bir kez yazılıp bütün sayfalara miras kalan tek bir değerden çıkar. Yani çözüm genelde yüzlerce düzenleme değil, tek bir ayardır.

Etiket neyi yapabilir, neyi yapamaz?

Etiket <head> içine yazılır:

<link rel="canonical" href="https://ornekblog.com/kahve-ogutme-ayari">

Google bunu emir değil tercih olarak görür. Kanonikleştirme belgesinde açıkça yazıyor: "indicating a canonical preference is a hint, not a rule". Kopya adresleri birleştirme rehberi de rel="canonical" etiketini güçlü bir sinyal olarak tanımlıyor. Google yönlendirmeleri, HTTPS'i ve site haritasını da tartar; güçlü bir sayfadaki yanlış etiketi bazen görmezden gelebilir. Buna güvenme.

Aşağıdaki çözümler için aynı rehberden üç kural önemli. Etiket yalnızca HTML'in <head> bölümündeyse kabul edilir. Göreli değil tam adres kullanılmalı ("Use absolute paths rather than relative paths"). Sinyaller tutarlı olmalı: site haritasında bir adres, aynı sayfanın canonical'ında başka bir adres verme.

Altı bulgu, altı ayrı sorun

Bulgu Ne demek İlk adım
tech.canonical_conflict Yazılar sitendeki başka bir sayfayı canonical gösteriyor Ortak şablonu ya da ayarı bul
tech.canonical_offsite Yazılar başka bir alan adını canonical gösteriyor Taşıma ya da kopyalanmış şablon izi ara; içeriğin senin olduğundan emin ol
seo.canonical_broken Canonical hedefi hata veriyor, yönleniyor ya da noindex Son ve çalışan adrese çevir
seo.canonical_http HTTPS sitede canonical http:// ile başlıyor Site adresi ayarını düzelt
seo.canonical_missing Yazıların en az yarısında canonical yok SEO eklentisinin çıktısını aç ya da layout'a ekle
seo.canonical_multiple Bir sayfada iki ya da daha fazla canonical var Kaynaklardan birini kapat

Bunlar kopya içerik sorunlarıyla kesişir ama aynı şey değildir. Canonical sorunu yanlış bir etikettir; kopya içerik ve anahtar kelime yamyamlığı ise sayfaların kendisiyle ilgilidir.

Tarama "başka sayfa"ya nasıl karar veriyor?

Taranan her sayfanın son adresini canonical etiketindeki adresle karşılaştırıyoruz. Karşılaştırmadan önce sondaki eğik çizgiyi, sorgu parametrelerini ve # kısmını atıyoruz; ayrıca yalnızca yolları da karşılaştırıyoruz. Bu yüzden http:// ile https:// farkı ya da www olup olmaması "başka sayfa" sayılmaz. Bunlar ya ayrı raporlanır (seo.canonical_http) ya da hiç raporlanmaz.

Beş sayfa ve canonical çifti: eğik çizgi ve parametre farkı aynı sayfa sayılıyor, http:// aynı sayfa ama ayrı bulgu, ana sayfa başka sayfa, yabancı alan adı başka site
Açıklama: Yalnızca kendi alan adındaki farklı bir yol "başka sayfa" sayılır; küçük adres farkları yok sayılır.

Hangisinin ne kadar yüksek sesle çıktığını bilmen için eşikler:

  • tech.canonical_conflict en az 3 yazı başka bir sayfayı gösterdiğinde çıkar. tech.canonical_offsite ise ilk yazıdan itibaren kritik olarak çıkar, çünkü orijinalin başkasının sitesinde olduğunu söyler.
  • seo.canonical_broken yalnızca tarama sırasında gerçekten istediğimiz hedefleri değerlendirir: 4xx ya da 5xx, yönlendirme veya noindex. Hiç istemediğimiz bir hedef hakkında hüküm vermeyiz.
  • seo.canonical_missing bir öneridir; yazıların %50'si ya da fazlasında canonical yoksa çıkar.
  • seo.canonical_multiple ana sayfa ve yazıların HTML'indeki <link rel="canonical"> öğelerini sayar. HTTP başlığıyla gönderilen canonical'ı okumayız.

Kontrollerin tamamı metodoloji sayfasında.

Yanlış canonical nereden gelir?

Bir değer, her yere miras

En sık gördüğümüz desen bu. Next.js'te layout ve sayfa metadata'sı sığ birleştirilir; alternates vermeyen sayfa layout'takini korur. Kök layout'a alternates: { canonical: '/' } yazarsan bunu ezmeyen her yazı canonical olarak ana sayfayı basar. WordPress'teki karşılığı, header.php içine sabit yazılmış <link rel="canonical" href="<?php echo home_url(); ?>"> satırıdır.

Next.js kök layout'unda alternates.canonical eğik çizgiye ayarlı; üç blog yazısının hepsi canonical olarak ana sayfayı basıyor
Açıklama: Ortak layout'taki tek satır her yazıya aynı canonical'ı verir; her yazı ana sayfanın kopyası olduğunu iddia eder.

2. sayfanın 1. sayfayı göstermesi

Google bu konuda net: sayfalanmış dizinin ilk sayfasını canonical yapma, her sayfaya kendi canonical adresini ver (sayfalama rehberi). Bazı temalar ve eski eklentiler hâlâ /page/2/ adresini ilk sayfaya bağlıyor.

Kopyalanan şablonlar, taşımalar, içerik paylaşımı

Google 2013'te yazdığı ama mekanizma açısından hâlâ geçerli bir yazıda, yoğun bir site sahibinin bir sayfa şablonunu canonical hedefini değiştirmeyi düşünmeden kopyaladığını anlatıyor (rel=canonical ile 5 sık hata). Alan adı taşımasından sonra, SEO eklentisinde yazı bazında saklanan canonical'lar eski alan adında kalabilir. Yazıların başka sitelerde yeniden yayımlanıyorsa, Google'ın sorun giderme sayfası canonical öğesinin bu amaçla önerilmediğini söylüyor ("is not recommended for those who want to avoid duplication by syndication partners").

İki kaynaktan iki etiket

Kendi canonical'ını basan bir tema artı SEO eklentisi ya da geçişten sonra açık bırakılmış iki SEO eklentisi. Aynı 2013 yazısına göre birden fazla canonical olduğunda Google büyük ihtimalle hepsini yok sayar ("Google will likely ignore all the rel=canonical hints"). Aynı değeri taşıyan iki etiket bile temizlenmeli; bir sonraki tema güncellemesi birini değiştirebilir.

Taşınmış hedefler

Kalıcı bağlantıları değiştirdin ya da bir sayfayı sildin; canonical'lar hâlâ artık yönlenen ya da 404 veren eski adresi gösteriyor. Google'ın 2013 kontrol listesi canonical'ın var olan, iyi içerikli bir adresi gösterdiğini kontrol etmeni istiyor: 404 değil, daha kötüsü soft 404 hiç değil. Eski adres yönleniyorsa canonical'ı yönlendirmenin son durağına çevir; yönlendirmelerin kendisini temizlemek için yönlendirme zinciri ve döngüsü rehberine bak.

Gerçek bir sitede nasıl görünüyordu?

Taradığımız bir Next.js sitesinde dört sayfa canonical olarak çıplak ana sayfa adresini basıyordu: yukarıdaki miras deseninin ürettiği çıktının aynısı.

Approvalens raporunda "Canonical başka bir sayfayı gösteriyor" kartı; canonical'ı sitenin ana sayfası olan dört adres
Açıklama: Gerçek bir rapordan kesit: her satır taranan sayfayı ve beyan ettiği canonical'ı gösteriyor; dördü de ana sayfayı işaret ediyor.

Her bulgu bir yazı değildir. Başka bir sitede 10 bulgunun çoğu, kendi dil bölümünün ana sayfasını gösteren gömülü araçlar (embed) ve hesap sayfalarıydı. Orada da ana sayfaya canonical yanlış sinyal, çünkü bu sayfalar ana sayfanın kopyası değil. Aramada hiç yer almamaları gerekiyorsa bunu dürüstçe söyleyen şey noindex; ne zaman doğru tercih olduğunu yanlışlıkla noindex rehberinde anlattık.

Bir sayfayı bir dakikada kontrol et

Etiketleri say ve değeri oku:

curl -s https://ornekblog.com/kahve-ogutme-ayari | grep -o '<link[^>]*rel="canonical"[^>]*>'
<link rel="canonical" href="https://ornekblog.com/"/>

Birden fazla satır seo.canonical_multiple demektir. Bazı siteler özniteliği tek tırnakla yazar; hiçbir şey dönmezse grep -io "<link[^>]*canonical[^>]*>" dene. Sonra hedefin son ve 200 olduğunu kontrol et:

curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" https://ornekblog.com/kahve-ogutme-ayari/
301 https://ornekblog.com/kahve-ogutme-ayari

Buradaki 301, canonical'ın bir yönlendirmeyi gösterdiği anlamına gelir. Search Console'da URL Denetimi "User-declared canonical" ile "Google-selected canonical" alanlarını yan yana gösterir; ikincisi Google'ın yetkili adres olarak seçtiği sayfadır (URL Denetimi yardımı). İkisi farklıysa Sayfa dizine ekleme raporu adresi "Duplicate, Google chose different canonical than user" altında listeler.

Platforma göre çözüm

Yoast SEO. Yazının Advanced bölümünde "Canonical URL" alanı var. Senin bilerek yazmadığın bir adres duruyorsa sil (Yoast yardımı). Yoast, noindex yapılmış sayfalarda canonical basmadığını da belirtiyor; bazı "eksik" sonuçlarını bu açıklar.

Rank Math. Advanced sekmesinde canonical alanı var; varsayılan olarak Rank Math yazının mevcut adresini canonical yapıyor (Rank Math KB). Başka yeri gösteren özel değerleri temizle.

WordPress temaları. Temada sabit yazılmış etiketi ara; SEO eklentin zaten basıyorsa sil:

grep -rn "canonical" wp-content/themes/temanin-adi/*.php

seo.canonical_http için Settings → General (Türkçe panelde Ayarlar → Genel) ekranında "WordPress Address (URL)" ve "Site Address (URL)" alanlarının ikisinin de https:// ile başladığından emin ol.

Blogger. Standart Blogger temaları canonical'ı kendisi basar. Kontrol ettiğimiz canlı bir Blogger blogunda yazı adresi de ?m=1 mobil sürümü de canonical olarak temiz yazı adresini gösteriyordu. Hazır bir tema kurduysan ya da <head> bölümünü düzenlediysen varsayılan bir Blogger temasıyla karşılaştır ve sonradan eklediğin fazladan canonical'ı kaldır.

Next.js. metadataBase değerini kök layout'ta bir kez ver, canonical'ı sayfa bazında yaz:

// app/blog/[slug]/page.tsx
export async function generateMetadata(
  { params }: { params: Promise<{ slug: string }> }
): Promise<Metadata> {
  const { slug } = await params
  return { alternates: { canonical: `/blog/${slug}` } }
}

Next.js belgesine göre metadataBase tanımlamadan göreli adres kullanmak derleme hatası verir ve metadataBase genelde kök app/layout.js dosyasında tanımlanır (generateMetadata). Yalnızca ana sayfa için düşünülmemişse alternates.canonical değerini kök layout'tan kaldır ve app/page.tsx içine taşı.

Başka adresi göstermek ne zaman doğru?

İki adres gerçekten aynı içeriği gösteriyorsa başka adrese canonical doğrudur: ?ref= ya da ?utm_ varyantı, yazdırma görünümü ya da iki kategoride görünen bir ürün. Şablondan üretilmiş, birbirine çok benzeyen sayfa gruplarında canonical asıl sorunu çözmez; ne zaman birleştirmen gerektiğini programatik SEO rehberi anlatıyor.

Ücretsiz tarama, canonical'ı başka yeri gösteren, eksik, çift ya da http:// olan her taranmış sayfayı gösterdiği adresle birlikte listeler.

Sık sorulan sorular

Her sayfada canonical etiketi olmalı mı?

Hayır. Google bunu zorunlu tutmuyor; eksik canonical bulgumuz da yalnızca bir öneri. Kendini gösteren bir canonical, takip parametreli ve eğik çizgili varyantların birbiriyle yarışmasına karşı ucuz bir sigorta.

Google canonical'ıma her zaman uyar mı?

Hayır, bu bir ipucu. Google başka bir sayfa seçebilir; hangisini seçtiğini URL Denetimi gösterir.

Canonical mı kullanayım, 301 yönlendirme mi?

Eski adresin ziyaretçiler için artık var olmaması gerekiyorsa yönlendir. İki adresin de çalışmaya devam etmesi gerekiyorsa canonical kullan.

Canonical etiketi AdSense reddine yol açar mı?

Canonical etiketlerinden söz eden bir AdSense politikası bilmiyoruz. Etki dolaylı: canonical'ı başka yeri gösteren sayfalar kopya muamelesi görür, yazıları kopya gibi görünen bir site de olduğundan zayıf görünebilir.

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

Bu rehberi İngilizce oku →

Ü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 →