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
<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'lerDisallow: /*.pdf$- .pdf ile biten tüm URL'lerDisallow: /*?- Query string içeren tüm URL'lerAllow: /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',
};
}
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:
- Google Search Console'a giriş yapın.
- Sol menüden "Sitemaps" sekmesine tıklayın.
- Sitemap URL'nizi girin ve "Submit" butonuna tıklayın.
- "Submitted" ve "Discovered URLs" sayılarını kontrol edin.
- Hata varsa detayları inceleyip düzeltin.
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.