- sayfaMetadata(): indekslenebilir sayfalar için tek kaynaklı canonical + eksiksiz openGraph üretimi; sayfalar buna geçirildi - robots.ts: yalnızca /api/ engellenir; noindex'li sayfalar robots engeli yerine meta ile yönetilir, AI botları niyeti belgeleyen açık grupla izinli - next.config: htmlLimitedBots'a AI botları eklendi (JS çalıştırmayan botlara metadata head içinde bloklanarak verilir) - sitemap lastmod + katalogda görünür 'Kaynak/son güncelleme' satırı (VeriKaynagi) KATALOG_VERI_TARIHI tek kaynağından - docs/geo/geo-raporu.md: çalışmanın raporu Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
53 lines
2.0 KiB
TypeScript
53 lines
2.0 KiB
TypeScript
import type { MetadataRoute } from "next";
|
||
import { KATALOG_VERI_TARIHI, SITE_URL } from "@/lib/seo";
|
||
import { getAllBolumSlugs, getAllUniversiteSlugs } from "@/lib/katalog";
|
||
import { getAllRehberler } from "@/lib/rehber";
|
||
|
||
// Bilinçli olarak sitemap DIŞI: /sonuc (noindex), /giris, /listem,
|
||
// /odeme/sonuc, /rapor/yazdir (auth/utility sayfaları).
|
||
const staticEntries: MetadataRoute.Sitemap = [
|
||
{ url: `${SITE_URL}/`, priority: 1, changeFrequency: "weekly" },
|
||
{
|
||
url: `${SITE_URL}/bolumler`,
|
||
lastModified: KATALOG_VERI_TARIHI,
|
||
priority: 0.8,
|
||
changeFrequency: "weekly",
|
||
},
|
||
{
|
||
url: `${SITE_URL}/universiteler`,
|
||
lastModified: KATALOG_VERI_TARIHI,
|
||
priority: 0.8,
|
||
changeFrequency: "weekly",
|
||
},
|
||
{ url: `${SITE_URL}/rehber`, priority: 0.8, changeFrequency: "weekly" },
|
||
{ url: `${SITE_URL}/paket`, priority: 0.7, changeFrequency: "monthly" },
|
||
{ url: `${SITE_URL}/meraklisina`, priority: 0.6, changeFrequency: "monthly" },
|
||
{ url: `${SITE_URL}/iletisim`, priority: 0.3, changeFrequency: "yearly" },
|
||
{ url: `${SITE_URL}/gizlilik`, priority: 0.2, changeFrequency: "yearly" },
|
||
{ url: `${SITE_URL}/kosullar`, priority: 0.2, changeFrequency: "yearly" },
|
||
];
|
||
|
||
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||
const bolumler: MetadataRoute.Sitemap = getAllBolumSlugs().map((slug) => ({
|
||
url: `${SITE_URL}/bolum/${slug}`,
|
||
lastModified: KATALOG_VERI_TARIHI,
|
||
priority: 0.7,
|
||
changeFrequency: "monthly",
|
||
}));
|
||
const universiteler: MetadataRoute.Sitemap = getAllUniversiteSlugs().map(
|
||
(slug) => ({
|
||
url: `${SITE_URL}/universite/${slug}`,
|
||
lastModified: KATALOG_VERI_TARIHI,
|
||
priority: 0.6,
|
||
changeFrequency: "monthly",
|
||
}),
|
||
);
|
||
const rehberler: MetadataRoute.Sitemap = getAllRehberler().map((y) => ({
|
||
url: `${SITE_URL}/rehber/${y.slug}`,
|
||
lastModified: y.tarih,
|
||
priority: 0.7,
|
||
changeFrequency: "monthly",
|
||
}));
|
||
return [...staticEntries, ...bolumler, ...universiteler, ...rehberler];
|
||
}
|