Next.js'te SEO için metadata nasıl yönetilir? generateMetadata ne işe yarar?
Cevap
App Router'da <head> elle yazılmaz; layout veya page dosyasından `metadata` nesnesi (statik) ya da `generateMetadata` fonksiyonu (dinamik) export edilir. Next.js bunları birleştirip <title>, <meta>, Open Graph ve canonical etiketlerini sunucuda üretir.
Statik
// app/layout.tsx
export const metadata = {
metadataBase: new URL("https://example.com"),
title: { default: "DevShop", template: "%s | DevShop" },
description: "Geliştiriciler için ürünler",
};Dinamik
// app/products/[slug]/page.tsx
export async function generateMetadata({ params }) {
const { slug } = await params; // Next 15+'da params bir Promise
const product = await getProduct(slug);
return {
title: product.name,
description: product.summary,
alternates: { canonical: `/products/${slug}` },
openGraph: { images: [product.imageUrl] },
};
}getProduct sayfa bileşeninde de çağrılıyorsa aynı istek tekilleştirilir (fetch memoization veya React.cache).
Diğer SEO dosyaları
app/sitemap.tsveapp/robots.ts: dinamik sitemap ve robots.txt üretir.opengraph-image.tsx: sosyal medya paylaşım görselini kodla üretir.- Yapılandırılmış veri için sayfaya JSON-LD
<script type="application/ld+json">eklenir.
Unutulmaması gerekenler
- Her sayfaya benzersiz
titlevedescription. - Çok dilli sitede
alternates.languagesilehreflang. - İçerik sunucuda render edildiği için (RSC/SSR) arama motorları JavaScript çalıştırmadan metni görür; bu, SPA'lara göre ana avantajdır.
İlgili Next.js soruları
- next/image bileşeni normal img etiketine göre ne avantaj sağlar?
- Next.js'te Middleware (Proxy) ne işe yarar?
- Server Actions nedir? Nasıl kullanılır?
- Next.js App Router'da Server Component ile Client Component arasındaki fark nedir?
- Next.js nedir? Sade React'e göre ne kazandırır?
- Next.js'te SSR, SSG ve ISR nasıl yapılandırılır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.