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?
- Aynı içeriğin farklı URL'lerle erişilebilir olması
- Parametre varyasyonları (sıralama, filtreleme)
- HTTP ve HTTPS versiyonları
- www ve non-www versiyonları
- Mobil ve masaüstü URL'leri
- Sayfalama (pagination)
Duplicate Content Sorunları
Yaygın Nedenler
- URL Parametreleri:
/urunler?siralama=fiyat /urunler?siralama=yeni /urunler?filtre=mavi - Session ID'ler:
/sayfa?sessionid=abc123 /sayfa?sessionid=xyz789 - Tracking Parametreleri:
/makale?utm_source=facebook /makale?utm_source=twitter - Protokol Farklılıkları:
http://example.com/sayfa https://example.com/sayfa - 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ı
- URL parametrelerinin etkisini azaltır
- Kazara oluşan duplicate'leri önler
- Tutarlı indeksleme sağlar
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ı
- İçerik sendikasyonu
- Çoklu mağaza platformları
- Bölgesel siteler
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: C3. 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
| Durum | Canonical | 301 Redirect |
|---|---|---|
| Kullanıcı erişimi | Her iki URL erişilebilir | Tek URL'ye yönlendirir |
| SEO sinyali | İpucu (hint) | Direktif |
| Kullanım | Parametre varyasyonları | Kalıcı taşıma |
| Link juice | Konsolide eder | Aktarır |
Test ve Doğrulama
Google Search Console
- URL Inspection Tool kullanın
- "Google-selected canonical" kontrol edin
- "User-declared canonical" ile karşılaştırın
Araçlar
- Screaming Frog: Toplu canonical analizi
- Ahrefs: Canonical sorunları raporu
- Chrome DevTools: Elements panelinde kontrol
// JavaScript ile kontrol
document.querySelector('link[rel="canonical"]')?.hrefE-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-canonicalFiltreleme 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.