# SEO-Erweiterung ## Übersicht Diese Dokumentation beschreibt die implementierten SEO-Features für das Payload CMS Multi-Tenant System. ## Implementierte Features ### 1. Dynamische Sitemap (`/sitemap.xml`) **Datei:** `/src/app/sitemap.ts` Die Sitemap wird dynamisch aus der Datenbank generiert und enthält: - Startseite (Priorität: 1.0, Änderungshäufigkeit: täglich) - Alle veröffentlichten Seiten (Priorität: 0.8, Änderungshäufigkeit: wöchentlich) - Alle veröffentlichten Posts mit typ-basierter URL (Priorität: 0.6, Änderungshäufigkeit: monatlich) **URL-Schema für Posts:** | Post-Typ | URL-Prefix | |----------|------------| | blog | `/blog/{slug}` | | news | `/news/{slug}` | | press | `/presse/{slug}` | | announcement | `/aktuelles/{slug}` | ### 2. Robots.txt (`/robots.txt`) **Datei:** `/src/app/robots.ts` Konfiguriert Crawler-Zugriff: ``` User-Agent: * Allow: / Disallow: /admin Disallow: /admin/* Disallow: /api/* Disallow: /_next/* Disallow: /media/* User-Agent: Googlebot Allow: / Disallow: /admin Disallow: /api Host: https://pl.c2sgmbh.de Sitemap: https://pl.c2sgmbh.de/sitemap.xml ``` ### 3. Structured Data (JSON-LD) **Datei:** `/src/lib/structuredData.ts` Bietet Helper-Funktionen für Schema.org-konforme JSON-LD Daten: #### Verfügbare Funktionen | Funktion | Beschreibung | |----------|--------------| | `generateOrganizationSchema()` | Organization Schema | | `generateArticleSchema()` | Article Schema für Blog-Posts | | `generateNewsArticleSchema()` | NewsArticle Schema | | `generateWebPageSchema()` | WebPage Schema | | `generateBreadcrumbSchema()` | BreadcrumbList Schema | | `generateFAQSchema()` | FAQPage Schema | | `generateReviewSchema()` | Review/Testimonial Schema | | `generateAggregateRatingSchema()` | AggregateRating Schema | | `generateLocalBusinessSchema()` | LocalBusiness Schema | | `generateWebSiteSchema()` | WebSite Schema mit SearchAction | | `combineSchemas()` | Kombiniert mehrere Schemas | | `renderJsonLd()` | Sicheres Rendering von JSON-LD | #### Verwendungsbeispiel ```tsx import { generateArticleSchema, renderJsonLd } from '@/lib/structuredData' export default function BlogPost({ post }) { const schema = generateArticleSchema({ title: post.title, description: post.excerpt, slug: post.slug, publishedAt: post.publishedAt, updatedAt: post.updatedAt, author: post.author, featuredImage: post.featuredImage, categories: post.categories, }, 'https://example.com') return ( <>