İçeriğe geç
SEO

Sitemap.xml ve Robots.txt: Arama Motoru Yönlendirme

Tarık Tunç
Sitemap.xml ve Robots.txt: Arama Motoru Yönlendirme

Sitemap.xml ve Robots.txt: Arama Motoru Yönlendirme

Sitemap.xml ve robots.txt, arama motorlarıyla iletişim kurmanın en temel yollarıdır. Sitemap, arama motorlarına sitenizde hangi sayfaların mevcut olduğunu bildirir; robots.txt ise hangi alanların taranması veya taranmaması gerektiğini belirler. Bu iki dosyayı doğru yapılandırmak, indeksleme verimliliğinizi ve crawl budget kullanımınızı doğrudan etkiler.

Robots.txt: Arama Motoru Erişim Kontrolü

Robots.txt, web sitenizin kök dizininde bulunan ve arama motoru botlarına (crawler) hangi URL'lere erişebileceklerini veya erişemeyeceklerini söyleyen düz metin bir dosyadır. Robots Exclusion Protocol standartına dayanır.

Robots.txt Temel Yapısı

# Tüm botlar için kurallar
User-agent: *
Allow: /
Disallow: /api/
Disallow: /admin/
Disallow: /private/
Disallow: /*?sort=
Disallow: /*?filter=

# Google için özel kurallar
User-agent: Googlebot
Allow: /
Disallow: /api/internal/

# AI botlarını engelleme
User-agent: GPTBot
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: Google-Extended
Disallow: /

# Crawl-delay (Googlebot bunu dikkate almaz)
User-agent: Bingbot
Crawl-delay: 5

# Sitemap konumu
Sitemap: https://tariktunc.com/sitemap.xml
Sitemap: https://tariktunc.com/sitemap-blog.xml
Uyarı: Robots.txt, sayfaların indekslenmesini engellemez. Bir sayfa robots.txt ile engellenmiş olsa bile, başka sitelerden link alıyorsa Google o sayfayı URL olarak indeksleyebilir. Gerçek indeks engelleme için <meta name="robots" content="noindex"> kullanın.

Pattern Matching Kuralları

Robots.txt'de wildcard (*) ve end-of-string ($) kullanılabilir:

  • Disallow: /admin/ - /admin/ ile başlayan tüm URL'ler
  • Disallow: /*.pdf$ - .pdf ile biten tüm URL'ler
  • Disallow: /*? - Query string içeren tüm URL'ler
  • Allow: /api/public/ - Belirli bir alt dizine izin verme

Sitemap.xml: Site Haritası Oluşturma

XML Sitemap, sitenizde indekslenmesini istediğiniz tüm URL'lerin listesini arama motorlarına sunar. Her URL için son değişiklik tarihi, değişiklik sıklığı ve öncelik bilgisi eklenebilir.

Sitemap.xml Yapısı

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
        xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">

  <url>
    <loc>https://tariktunc.com/</loc>
    <lastmod>2025-08-10</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <url>
    <loc>https://tariktunc.com/blog</loc>
    <lastmod>2025-08-10</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://tariktunc.com/blog/sitemap-robots-rehberi</loc>
    <lastmod>2025-08-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://tariktunc.com/images/sitemap-robots.webp</image:loc>
      <image:title>Sitemap ve Robots.txt Rehberi</image:title>
    </image:image>
  </url>

</urlset>

Sitemap Index (Büyük Siteler İçin)

50.000'den fazla URL'niz varsa veya dosya boyutu 50MB'ı aşıyorsa, sitemap index kullanarak birden fazla sitemap dosyasını birleştirin:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://tariktunc.com/sitemap-pages.xml</loc>
    <lastmod>2025-08-10</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://tariktunc.com/sitemap-blog.xml</loc>
    <lastmod>2025-08-10</lastmod>
  </sitemap>
</sitemapindex>

Next.js ile Dinamik Sitemap Oluşturma

// app/sitemap.ts
import { MetadataRoute } from 'next';

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const baseUrl = 'https://tariktunc.com';

  // Blog yazılarını çek
  const posts = await getAllPosts();

  const blogUrls = posts.map((post) => ({
    url: `${baseUrl}/blog/${post.slug}`,
    lastModified: new Date(post.updatedAt || post.date),
    changeFrequency: 'monthly' as const,
    priority: 0.8,
  }));

  // Statik sayfalar
  const staticPages = [
    { url: baseUrl, lastModified: new Date(), changeFrequency: 'weekly' as const, priority: 1.0 },
    { url: `${baseUrl}/blog`, lastModified: new Date(), changeFrequency: 'daily' as const, priority: 0.9 },
    { url: `${baseUrl}/about`, lastModified: new Date(), changeFrequency: 'monthly' as const, priority: 0.5 },
  ];

  return [...staticPages, ...blogUrls];
}

// app/robots.ts
import { MetadataRoute } from 'next';

export default function robots(): MetadataRoute.Robots {
  return {
    rules: [
      {
        userAgent: '*',
        allow: '/',
        disallow: ['/api/', '/admin/', '/private/'],
      },
      {
        userAgent: 'GPTBot',
        disallow: '/',
      },
    ],
    sitemap: 'https://tariktunc.com/sitemap.xml',
  };
}
İpucu: Next.js'te app/sitemap.ts ve app/robots.ts dosyaları oluşturduğunuzda, framework otomatik olarak /sitemap.xml ve /robots.txt endpoint'lerini oluşturur. Manuel dosya yönetimi gerekmez.

Google Search Console ile Doğrulama

Sitemap'inizi Google Search Console'a göndererek indeksleme durumunu takip edebilirsiniz:

  1. Google Search Console'a giriş yapın.
  2. Sol menüden "Sitemaps" sekmesine tıklayın.
  3. Sitemap URL'nizi girin ve "Submit" butonuna tıklayın.
  4. "Submitted" ve "Discovered URLs" sayılarını kontrol edin.
  5. Hata varsa detayları inceleyip düzeltin.
Bilgi: Google, changefreq ve priority değerlerini büyük ölçüde göz ardı eder. Ancak lastmod değeri güncel ve doğru olduğunda, Google bu bilgiyi crawl planlamasında kullanır. Her zaman gerçek son değişiklik tarihini belirtin.

Best Practices

  • Sitemap'te yalnızca canonical URL'leri listeleyin.
  • Noindex sayfaları sitemap'e eklemeyin.
  • 301/302 yönlendirme yapan URL'leri sitemap'ten çıkarın.
  • Robots.txt dosyasını her zaman sitenizin kök dizininde tutun.
  • Robots.txt'te sitemap konumunu mutlaka belirtin.
  • Büyük sitelerde sitemap index yapısı kullanın.
  • Sitemap'i her yeni içerik eklediğinizde otomatik güncelleyin.

Sonuç

Sitemap.xml ve robots.txt, arama motoru optimizasyonunun teknik temellerini oluşturur. Doğru yapılandırılmış bir robots.txt ile crawl budget'ınızı verimli kullanır, kapsamlı bir sitemap ile tüm önemli sayfalarınızın keşfedilmesini sağlarsınız. Next.js gibi modern framework'ler bu dosyaların otomatik oluşturulmasını kolaylaştırır. Düzenli olarak Google Search Console'dan indeksleme durumunuzu kontrol etmeyi unutmayın.

Kaynaklar

İlgili Yazılar