Bu etiketle ilgili yaygın kanıların yarısını devirecek bir gerçekle başlayalım: rel="canonical" bir ipucudur, emir değil.
Google onu diğer bütün sinyallerle birlikte tartar: iç bağlantılar, site haritası, yönlendirmeler, hreflang. Bu sinyaller birbiriyle çeliştiğinde arama motoru doğru bulduğu adresi seçer ve sizin canonical'ınızı yok sayar. Bu, Google'ın kopya adresleri birleştirmeye dair resmi dokümantasyonunda yazılıdır.
Geri kalan her şey bundan çıkar: canonical tek başına çalışmaz, yalnızca diğer sinyaller aynı yeri gösterdiğinde işe yarar.
Sözdizimi
Etiket <head> içine konur:
<link rel="canonical" href="https://example.com/sayfa">
En sık çiğnenen üç kural:
Mutlak adres kullanın. Göreli yollar teknik olarak kabul edilir, ancak temel adresteki en küçük hata onları çöpe çevirir. Şema ve alan adı dahil, tam yazın.
Tam olarak bir etiket. Bir sayfada iki farklı canonical bağlantısı varsa Google ikisini birden atar. Bu, aynı anda iki SEO eklentisi çalıştırmanın klasik sonucudur.
Yalnızca <head> içinde. <body> içine düşen bir canonical — örneğin bir betiğin yanlış yere yerleştirdiği — dikkate alınmaz.
Kendi HTML'i olmayan dosyalar için (PDF, görseller) canonical HTTP başlığı olarak taşınır:
Link: <https://example.com/belge.pdf>; rel="canonical"
Canonical neyi çözer
Tek bir sorunu: aynı içerik birden fazla adreste bulunuyor ve hepsinin erişilebilir kalması gerekiyor.
Tipik durumlar:
- sıralama ve filtre parametreleri:
?sort=price,?color=red; - UTM etiketleri ve reklam kimlikleri;
- birden fazla kategoride listelenen tek ürün;
- yazdırma sürümleri;
- farklı alt alan adlarındaki aynı içerik.
Bunların hiçbirinde basitçe yönlendirme yapamazsınız — sayfa gereklidir. Canonical, arama motoruna hangi adresin asıl sayılacağını söyler ve sinyalleri orada toplar.
Kendine işaret eden canonical
Bir sayfa canonical'ını kendisine yöneltebilir. Zorunlu değil ama faydalı: birinin adresinizi sonuna yabancı bir parametre ekleyerek açması ve arama motorunun bunu ayrı bir sayfa sayması ihtimaline karşı sigortadır.
Canonical ne değildir
Hataların çoğu buradan çıkar, o yüzden komşu araçları tek tabloda görelim.
| Amaç | Araç | Neden canonical değil |
|---|---|---|
| Sayfa kalıcı olarak taşındı | 301 yönlendirme | Canonical eski adresi erişilebilir bırakır |
| Hedef geçici olarak değişiyor | 302 yönlendirme | Aynı sebep |
| Sayfa dizinde olmamalı | noindex |
Canonical dizinden hiçbir şey çıkarmaz |
| Sayfa taranmamalı | robots.txt | O da sayfayı dizinden çıkarmaz |
| Aynı içeriğin farklı dilleri | hreflang + kendine canonical | Bunlar kopya değildir |
| Sayfalanmış listeler | Hiçbiri | 2, 3, 4. sayfalar kendi başlarına vardır |
İki madde vurgu hak ediyor.
Canonical 301'in yerini tutmaz. Sayfa gerçekten taşındıysa yönlendirin. Canonical, iki adresin de çalışmaya devam etmesi gereken durumlar içindir.
Sayfalama, kopyalama değildir. Liste sayfalarının hepsinin canonical'ını birinci sayfaya yöneltmek yaygın bir hatadır: 2. ve 3. sayfaların içeriği farklıdır ve siz onları yalnızca dizinden çıkarmış olursunuz.
Canonical ve hreflang
En hassas kısım ve bu alandaki en pahalı hatanın yaşadığı yer.
Hata şu: bütün dil sürümlerini İngilizce sürüme canonical'lamak. Mantık makul görünür — İngilizce «ana» sürümdür. Sonuç ise tam tersidir: arama motoruna Almanca ve İspanyolca sayfaların bağımsız olmadığını söylemiş olursunuz ve onlar kendi pazarlarındaki sonuçlardan kaybolur.
Doğru düzen:
- her dil sürümü canonical'ını kendisine yöneltir;
- bütün sürümler
hreflangile birbirini listeler, kendileri dahil; - ilişkiler karşılıklıdır: A, B'ye atıf yapıyorsa B de A'ya atıf yapmalıdır;
hreflangparametreli varyantları değil, kanonik adresleri gösterir;x-default, dili hiçbirine uymayan ziyaretçiler için yedek sürümü belirtir.
Şu anda okuduğunuz site böyle kurulmuştur. YouTube bağlantılarını kısaltmaya dair sayfanın 21 dil sürümü var ve her biri kendisine canonical'lanıyor. Çince sürümü şöyle görünüyor:
<link rel="canonical" href="https://lix.li/suoduan-youtube-lianjie">
<link rel="alternate" hreflang="en" href="https://lix.li/shorten-youtube-link">
<link rel="alternate" hreflang="zh" href="https://lix.li/suoduan-youtube-lianjie">
<link rel="alternate" hreflang="es" href="https://lix.li/acortar-link-youtube">
Dikkat edin: canonical İngilizce adresi değil Çince adresi gösteriyor ve Çince sürüm kendi hreflang listesinde yer alıyor.
Sık yapılan hatalar
Google başlıcalarını yıllar önce rel=canonical ile ilgili beş hata notunda derlemişti; liste o günden beri neredeyse değişmedi.
404 döndüren bir adrese işaret eden canonical. Etiket tümüyle yok sayılır.
noindex taşıyan bir sayfaya işaret eden canonical. Çelişkili sinyaller: aynı anda hem «bunu asıl say» hem «bunu dizine ekleme» diyorsunuz.
robots.txt ile engellenmiş bir adrese işaret eden canonical. Tarayıcı onu alamaz, dolayısıyla doğrulayamaz da.
Zincirler. A, B'yi; B, C'yi gösteriyor. Search Console'da bu «kanonik adres seçilmedi» hâline gelir. Doğrudan son adresi gösterin.
http ile https'i, www ile www'suzu karıştırmak. Canonical'daki şema ve ana makine, asıl saydığınız site sürümüyle örtüşmelidir.
Aynı sayfada canonical ve noindex. İkisinden birini seçin.
Google başka bir adres seçtiğinde
Search Console'da bu, «Yinelenen sayfa, Google kullanıcının belirttiğinden farklı bir kanonik sayfa seçti» olarak görünür.
Bu ne bir işaretleme hatası ne de ceza. Diğer sinyallerin etiketinize ağır bastığını bildiren bir mesajdır. Kontrol edilecekler:
- İç bağlantılar. Bütün site parametreli varyanta bağlanırken canonical temiz adresi gösteriyorsa, arama motoru bağlantılara inanır.
- Site haritası. İçinde yalnızca kanonik adresler olmalıdır.
- Yönlendirmeler. Canonical, kendisi başka yere yönlendiren bir adresi gösteriyorsa etiket gücünü yitirir.
- Gerçekten kopya olup olmadıkları. İçerik gözle görülür biçimde farklıysa, arama motoru sayfaları ayrı saymakta haklıdır.
Sinyalleri hizalayın, etiket çalışmaya başlar. Algoritmayla tartışmak boşunadır; o resmin tamamını okur.
Kısa bağlantılar ve canonical
Sık sorulan, ancak genel kılavuzların yanıtlamadığı bir soru.
Kısa bağlantı sayfanın kopyasını yaratır mı? Hayır.
Kısaltıcı içeriğin kopyasını sunmaz — bir HTTP yönlendirmesi döndürür. 302 yanıtının ne gövdesi ne de <head>'i vardır, dolayısıyla canonical koyacak fiziksel bir yer yoktur. Tarayıcı yönlendirmeyi izler ve kendi canonical'ını taşıyan hedefle çalışır. Bu mekanizmanın nasıl işlediği URL kısaltıcı nasıl çalışır yazısında anlatılıyor.
Bu sitedeki kısa bağlantılar ayrıca X-Robots-Tag: noindex, nofollow başlığını döndürerek yönlendirmenin kendisinin dizine eklenmemesini açıkça ister.
Peki kendi kısa alan adınız? Yönlendirme yaptığı sürece o da kopya yaratmaz. Kopyalar, aynı içeriği iki alan adında yönlendirmeden sunduğunuzda ortaya çıkar — asıl adrese işaret eden bir canonical tam da o zaman gerekir. Kısa linkler için özel alan adının neden değerli olduğu ayrıca ele alınıyor; bağlamayı özel alan adı sayfasından yapabilirsiniz.
Kısa kontrol listesi
- Sayfa başına bir canonical,
<head>içinde, mutlak adresle. - Hedef 200 döndürüyor, robots.txt ile engellenmemiş ve
noindexişaretli değil. - Zincir yok — doğrudan son adresi gösterin.
- Her dil sürümü kendisine canonical'lanıyor; hreflang karşılıklı.
- Site haritası ve iç bağlantılar aynı kanonik adreslere götürüyor.
- Sayfalama ve taşınmış sayfalar canonical ile değil, kendi araçlarıyla çözülüyor.