Canonical URL Kullanımı: Duplicate Content Sorunlarını Önleme Rehberi

Canonical tag kullanarak duplicate content sorunlarını çözün. SEO için doğru canonical URL stratejileri ve yaygın hataları öğrenin.

Canonical URL (rel="canonical"), arama motorlarına bir sayfanın tercih edilen versiyonunu belirten HTML elemanıdır. Bu rehberde duplicate content sorunlarını çözmek için canonical tag kullanımını detaylı inceliyoruz.

Canonical Tag Nedir?

Canonical tag, aynı veya benzer içeriğe sahip birden fazla URL olduğunda, arama motorlarına hangi versiyonun indekslenmesi gerektiğini söyler.

Temel Sözdizimi

<link rel="canonical" href="https://example.com/tercih-edilen-sayfa" />

Neden Gerekli?

Duplicate Content Sorunları

Yaygın Nedenler

  1. URL Parametreleri:
    /urunler?siralama=fiyat
    /urunler?siralama=yeni
    /urunler?filtre=mavi
  2. Session ID'ler:
    /sayfa?sessionid=abc123
    /sayfa?sessionid=xyz789
  3. Tracking Parametreleri:
    /makale?utm_source=facebook
    /makale?utm_source=twitter
  4. Protokol Farklılıkları:
    http://example.com/sayfa
    https://example.com/sayfa
  5. Trailing Slash:
    /kategori
    /kategori/

Canonical Tag Uygulama Yöntemleri

1. HTML Head Bölümünde

<head>
  <link rel="canonical" href="https://example.com/ana-sayfa" />
</head>

2. HTTP Header ile

Link: <https://example.com/ana-sayfa>; rel="canonical"

Nginx Örneği

location /pdf/ {
    add_header Link '<https://example.com/pdf/dosya>; rel="canonical"';
}

3. Sitemap'te

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/ana-sayfa</loc>
  </url>
</urlset>

Framework Uygulamaları

Laravel

// Blade template
<link rel="canonical" href="{{ url()->current() }}" />

// veya Controller'da
public function show($slug)
{
    $canonical = route('product.show', $slug);
    return view('product', compact('canonical'));
}

Next.js

import Head from 'next/head';

export default function Page() {
  return (
    <Head>
      <link rel="canonical" href="https://example.com/sayfa" />
    </Head>
  );
}

WordPress

// functions.php
remove_action('wp_head', 'rel_canonical');
add_action('wp_head', 'custom_canonical');

function custom_canonical() {
    if (is_singular()) {
        echo '<link rel="canonical" href="' . get_permalink() . '" />';
    }
}

Self-Referencing Canonical

Her sayfa kendisine işaret eden bir canonical tag içermelidir:

<!-- https://example.com/urun/ayakkabi sayfasında -->
<link rel="canonical" href="https://example.com/urun/ayakkabi" />

Faydaları

Cross-Domain Canonical

Farklı domainler arasında içerik paylaşımında:

<!-- syndicate.com'daki içerik -->
<link rel="canonical" href="https://original.com/makale" />

Kullanım Senaryoları

Pagination ve Canonical

Doğru Yaklaşım

<!-- Sayfa 1 -->
<link rel="canonical" href="/blog" />

<!-- Sayfa 2 -->
<link rel="canonical" href="/blog?page=2" />

<!-- Her sayfa kendine canonical -->

rel="prev" ve rel="next" (Kullanım Dışı)

Google artık prev/next'i kullanmıyor. Her sayfa kendi canonical'ına sahip olmalı.

Yaygın Hatalar

1. Relative URL Kullanımı

<!-- YANLIŞ -->
<link rel="canonical" href="/sayfa" />

<!-- DOĞRU -->
<link rel="canonical" href="https://example.com/sayfa" />

2. Canonical Zinciri

<!-- YANLIŞ: A → B → C -->
Sayfa A canonical: B
Sayfa B canonical: C

<!-- DOĞRU: A → C, B → C -->
Sayfa A canonical: C
Sayfa B canonical: C

3. 4xx/5xx Sayfalara Canonical

<!-- YANLIŞ -->
<link rel="canonical" href="https://example.com/404" />

4. Farklı İçeriğe Canonical

<!-- YANLIŞ: Mavi ayakkabı sayfası -->
<link rel="canonical" href="/kirmizi-ayakkabi" />

5. Noindex + Canonical Kombinasyonu

<!-- YANLIŞ -->
<meta name="robots" content="noindex" />
<link rel="canonical" href="https://example.com/sayfa" />

Canonical vs Redirect

DurumCanonical301 Redirect
Kullanıcı erişimiHer iki URL erişilebilirTek URL'ye yönlendirir
SEO sinyaliİpucu (hint)Direktif
KullanımParametre varyasyonlarıKalıcı taşıma
Link juiceKonsolide ederAktarır

Test ve Doğrulama

Google Search Console

  1. URL Inspection Tool kullanın
  2. "Google-selected canonical" kontrol edin
  3. "User-declared canonical" ile karşılaştırın

Araçlar

// JavaScript ile kontrol
document.querySelector('link[rel="canonical"]')?.href

E-ticaret Siteleri İçin

Ürün Varyasyonları

<!-- Renk varyasyonları aynı ürün -->
/urun/tisort?renk=mavi → canonical: /urun/tisort
/urun/tisort?renk=kirmizi → canonical: /urun/tisort

<!-- Beden varyasyonları ayrı indekslenebilir -->
/urun/tisort-mavi-m → self-canonical
/urun/tisort-mavi-l → self-canonical

Filtreleme Sayfaları

<!-- Filtreli sayfalar ana kategoriye canonical -->
/kategori?marka=nike&siralama=fiyat
canonical: /kategori

Çok Dilli Siteler

hreflang ile birlikte canonical kullanımı:

<link rel="canonical" href="https://example.com/tr/urun" />
<link rel="alternate" hreflang="tr" href="https://example.com/tr/urun" />
<link rel="alternate" hreflang="en" href="https://example.com/en/product" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/product" />

Sonuç

Canonical tag, duplicate content sorunlarını çözmenin en etkili yoludur. Her sayfada self-referencing canonical kullanın, absolute URL tercih edin ve düzenli olarak Google Search Console'da kontrol edin. SlugURL ile oluşturduğunuz SEO-dostu URL'leri doğru canonical stratejileriyle destekleyerek arama motoru sıralamalarınızı optimize edin.