Düzeltme: Next.js (App Router) için Google Search Console "Sitemap Getirilemedi"
Güncellenme 10 Ekim 2025
Google Search Console için Next.js sitemap sorun giderme rehberi
Eğer Next.js projeniz için Google Search Console’da “Sitemap getirilemedi” hatasını görüp kafanızı karıştırdıysanız, yalnız değilsiniz. Bu can sıkıcı Google Search Console sitemap hatası, Google’ın sitenizi düzgün bir şekilde dizine eklemesini engelleyerek görünürlüğünüzü zedeleyebilir. Next.js App Router kullanan birçok geliştirici, GSC sitemap’i okuyamadığında, tarayıcıda mükemmel bir şekilde erişilebilir görünse bile, bu Next.js sitemap sorun giderme zorluğuyla karşılaştı.
Neyse ki, geliştirici topluluğu güvenilir bir çözüm buldu. Bu rehber, bir Next.js GitHub sorununda paylaşılan yararlı bir keşfe dayanarak, “Getirilemedi” hatasını düzeltmek için tam adımları size sunuyor.
Sitemap’inizin dizine eklenmesini ve sitenizin tekrar yoluna girmesini sağlayalım. Daha fazla bilgi ve ek tartışma için GitHub sorunundaki buradaki cevabıma da göz atabilirsiniz.
Sorun: Google Neden Sitemap’i Getiremiyor?
Sorunun özü, Next.js’in yönlendirmeyi ve orta katmanı nasıl ele aldığı ile Google Search Console’un getirme denemelerini nasıl önbelleğe aldığı bir kombinasyonuna dayanıyor gibi görünüyor. GSC sitemap.xml’inize erişmeye çalıştığında, genellikle orta katmandan kaynaklanan bir müdahaleyle karşılaşabilir ve bu da isteğin başarısız olmasına neden olabilir. Bir kez başarısız olduğunda, GSC o belirli URL için başarısız sonucu önbelleğe alıyor gibi görünüyor. Temel sorunu düzelttikten sonra bile, aynı sitemap.xml URL’sini yeniden göndermek yeni bir deneme tetiklemeyebilir.
”Getirilemedi” Hatası Nasıl Düzeltilir
Bu çözüm, önbelleklemeyi, yönlendirmeyi ve orta katman çakışmalarını dört temel adımla ele alan pratik bir yaklaşım paylaşan GitHub kullanıcısı @segabrielcarvalho’dan geliyor.
Adım 1: Son Eğik Çizgi ile Yeni Bir Sitemap Getirmeye Zorla
Bu en basit ama en kritik adımdır. Google Search Console, başarısız getirme denemelerini agresif bir şekilde önbelleğe alıyor gibi görünüyor. Temiz bir sayfayla tekrar denemesini zorlamak için basit bir önbellek kırma tekniği kullanabilirsiniz.
https://your-site.com/sitemap.xml göndermek yerine, sonuna bir eğik çizgi ekleyin:
https://your-site.com/sitemap.xml/
Bu biraz farklı URL’yi göndermek, GSC’nin önbelleğini atlayacak ve yeni bir getirme tetikleyecektir. Bu basit numara, diğer düzeltmeleri uyguladıktan sonra sitemap’in başarıyla okunmasını sağlamak için genellikle yeterlidir.
Adım 2: Sitemap’i İç İçe Bir Rota’dan Sun
sitemap.ts dosyanızı app dizininin köküne yerleştirmek yerine, iç içe bir klasöre taşıyın. Bu, onu izole etmeye ve çakışma olmadan doğru bir şekilde sunulmasını sağlamaya yardımcı olur.
appdizininiz içinde yeni birsitemapklasörü oluşturun.sitemap.ts(veyasitemap.js) dosyanızı içine taşıyın.
Yeni dosya yolunuz şöyle olacak: app/sitemap/sitemap.ts
Bu, sitemap’inizin herkese açık URL’sini değiştirir. Yeni URL şöyle olacak:
https://your-site.com/sitemap/sitemap.xml
Bunu Google Search Console’a gönderirken (eğik çizgi numarasıyla birlikte!) bu yeni URL’yi kullanmayı unutmayın.
Adım 3: SEO Dosyalarınızı Orta Katmanınızdan Hariç Tutun
Orta katman güçlüdür, ancak Googlebot’in sitemap ve robots.txt gibi önemli dosyalara erişmesini yanlışlıkla engelleyebilir. Bunu önlemek için, middleware.ts dosyanızı bu dosyaları açıkça hariç tutacak şekilde güncellemeniz gerekir.
Orta katman dosyanızdaki matcher yapılandırması, orta katmanın hangi yollarda çalışacağını Next.js’e söyler. Olumsuz bir bakış açısı kullanarak, statik varlıklar ve SEO dosyaları dışındaki tüm yollarda çalışacak şekilde talimat verebilirsiniz.
İşte mevcut orta katmanınız için uyarlayabileceğiniz, hiçbir şey yapmayan ancak gerekli dosyaları doğru şekilde hariç tutan bir orta katman örneği.
import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";
export default function middleware(req: NextRequest) {
// Orta katman mantığınız buraya gidebilir.
// Başka mantığınız yoksa, sadece next() döndürün.
void req;
return NextResponse.next();
}
export const config = {
matcher: [
/*
* Aşağıdakilerle başlayan yollar dışındaki tüm istek yollarını eşleştir:
* - _next/static (statik dosyalar)
* - _next/image (görsel optimizasyon dosyaları)
* - favicon.ico (favicon dosyası)
* - robots.txt (robots dosyası)
* - sitemap.xml (sitemap dosyası)
* - sitemap/ (iç içe sitemap dosyaları)
* - site.webmanifest (web manifest dosyası)
*/
"/((?!_next/static|_next/image|favicon\\.ico|robots\\.txt|sitemap\\.xml|sitemap/.*|site\\.webmanifest).*)",
],
};
Bu yapılandırma, robots.txt ve potansiyel sitemap yollarının (/sitemap.xml ve /sitemap/sitemap.xml) orta katman tarafından asla işlenmemesini sağlayarak Googlebot’i karıştırabilecek potansiyel engellemeleri veya yönlendirmeleri önler.
Adım 4: Doğru Bir robots.txt Dosyası Oluşturun
Son olarak, app dizininizde temiz ve doğru bir robots.txt dosyanız olduğundan emin olun. Bu dosya tüm kullanıcı aracılarına açıkça izin vermeli ve yeni sitemap URL’nize işaret etmelidir. public klasörünüzde bir robots.txt varsa, çakışmaları önlemek ve yalnızca app dizininizden üretilene güvenmek için en iyisi onu kaldırmaktır.
app dizininizde robots.ts veya robots.txt adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin:
import { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: '*',
allow: '/',
},
sitemap: 'https://your-site.com/sitemap/sitemap.xml',
}
}
Veya statik bir dosya tercih ediyorsanız:
User-agent: *
Allow: /
Sitemap: https://your-site.com/sitemap/sitemap.xml
https://your-site.com yerine gerçek alan adınızı yazdığınızdan emin olun. Bu dosya, tarayıcıları sitemap’inizin yeni konumuna yönlendirir.
Önemli Çıkarımlar
Düzeltmeyi özetlemek gerekirse:
- GSC’ye gönderirken sitemap URL’nize bir son eğik çizgi (
/) kullanın (önbelleği kırmak için). - Sitemap dosyanızı
app/sitemap/sitemap.tsgibi iç içe bir rotaya taşıyın. - Orta katmanınızı
robots.txtvesitemap.xmlgibi SEO dosyalarını hariç tutacak şekilde güncelleyin. robots.txtdosyanızı yeni sitemap URL’sine işaret edin.
Ayrıca, sitemap’iniz için yalnızca bir kaynağınız olduğundan emin olmak önemlidir. public klasörünüzde bir sitemap.xml varsa ve aynı zamanda app dizinizden bir tane oluşturuyorsanız, çakışmalar ortaya çıkabilir. Eski sitemap dosyalarını silin ve tek, dinamik olarak üretilen bir dosyaya sadık kalın.
Bu adımları takip ederek, “Sitemap getirilemedi” hatasını çözebilir ve Next.js sitenizin Google tarafından düzgün bir şekilde dizine eklenmesini sağlayabilirsiniz. Mutlu gönderimler