Zum Hauptinhalt springen

Erweiterungsideen: Public Explorer (Audit 2026-02-22)

Nicht umgesetzte Erweiterungsideen für den Public Explorer.

ItemBeschreibungPriorität
Google Search Console Ping (E1)Deprecated — Google hat den /ping Endpoint 2023 abgeschaltet (404). Code wurde am 2026-02-28 entfernt.Erledigt
Dynamische robots.txt (E3)Route /robots.txt statt statische Datei — generiert Sitemap: Zeile automatisch aus config('app.url'). Pro: Kein manuelles Update bei Domain-Wechsel. Contra: Overhead bei jedem Request (minimal), Edge Cases bei CDN/Cache. Aktuell: Command aktualisiert robots.txt bei jeder Generation.Niedrig
Image-Sitemap (E4)<image:image> Extension für Profil-Thumbnails in Profile-Sitemaps. Verbessert Google Images Indexierung.Niedrig
News-Sitemap (E5)Separate sitemap-news.xml für Google News wenn Blog/News-Feature kommt.Niedrig
Sitemap-Diff-Log (E6)Vergleich mit vorheriger Generation — wie viele URLs hinzugefügt/entfernt. Nützlich für SEO-Monitoring.Niedrig
hreflang-Support (E7)Wenn Mehrsprachigkeit kommt, <xhtml:link> für Sprachvarianten in Sitemaps.Niedrig
Sitemap-Kompression (E8).xml.gz komprimierte Sitemaps für schnellere Google-Verarbeitung bei großen Sitemaps (>10MB).Niedrig
Suchfeld als sticky Header-BarAktuell ist das Suchfeld nur im Index-Component eingebettet. Plan sah eine eigene <x-public-explorer-search /> Blade-Component vor, die auf allen /explorer* Routes als sticky Bar unterhalb der Navigation eingeblendet wird.Mittel
Show-Seite Caching (1h)Cache::remember('public-explorer:profile:{id}', 1h). Aktuell kein Caching auf der Show-Seite — Daten werden direkt aus DB-JSON-Feldern geladen. Bei hohem Traffic relevant.Mittel
Search-Resultate Caching (15min)Cache::remember('public-explorer:search:{hash}', 15min). Aktuell keine Suche-Ergebnis-Caches. Bei >50k published Profiles relevant.Niedrig
Trending-Sektion auf Startseite"Gerade im Trend" als eigene Sektion neben Random-Profilen. Service hat bereits getTrendingProfiles() mit 6h Cache, aber die Index-Seite zeigt nur Random oder Suchergebnisse.Mittel
Country-FilterProfile nach Land filtern auf Index/Browse-Seiten. country-Feld existiert bereits auf public_explorer_profiles.Niedrig
Social-Share-Buttons auf Profilseite"Dieses Profil teilen" (Twitter, WhatsApp, Link kopieren) auf der Show-Seite.Niedrig
Open Graph Preview-BilderDynamisch generierte OG-Images mit Profilbild + Score + Follower-Zahl. Erfordert Image-Generation.Niedrig
Breadcrumbs (UI)JSON-LD Breadcrumbs sind implementiert, aber sichtbare UI-Breadcrumbs auf der Show-Seite fehlen.Niedrig
410 Gone für SEOSoft-deleted Profile könnten statt 302 Redirect ein 410 Gone zurückgeben, um Suchmaschinen zu signalisieren, dass die Seite dauerhaft entfernt wurde. Aktuell: 302 Temporary → Explorer-Startseite. Pro: besseres SEO-Signal. Contra: Profil könnte re-eligible werden.Niedrig

Location: app/Livewire/PublicExplorer/, app/Services/PublicExplorer/PublicExplorerService.php

Erledigt (Redirect-Logik, 2026-02-22)

Folgende Items wurden im Rahmen der Redirect-Logik umgesetzt:

  • Profil-Slug 301-Redirect — Implementiert in Show.php (301 auf canonical URL bei Slug-Mismatch)
  • Soft-Delete + Redirect: Profile werden soft-deleted statt hard-deleted, mit ?removed=1 Notice und Category-Redirect (E5)
  • Auto url_redirects: Automatische Redirect-Einträge in url_redirects mit Filter in Admin Error-Monitor (E4)
  • Re-Eligibility-Tracking: restored_at Timestamp + Admin-UI-Integration (E7)
  • Prune-Integration: Soft-deleted Einträge >90 Tage werden force-deleted, zugehörige Auto-Redirects deaktiviert

Erledigt (Tag Auto-Redirects, 2026-02-23)

  • Tag Auto-Redirects: Automatische 302-Redirects für Tag-Seiten (/explorer/tag/{slug}) die alle Profile verloren haben. PublicExplorerService sammelt Tags vor/nach dem Refresh, erstellt url_redirects für entfernte Tags, deaktiviert Redirects für wiederhergestellte Tags. TagLanding zeigt Soft-Redirect statt hard 404. (app/Services/PublicExplorer/PublicExplorerService.php, app/Livewire/PublicExplorer/TagLanding.php)

Erledigt (XML-Sitemap, 2026-02-22)

  • Sitemap Command (sitemap:generate) — Vollständig implementiert: XMLWriter-basierte Generierung, Sitemap-Index mit Teil-Sitemaps (static, categories, tags, profiles), Partitionierung bei >10k Profilen, CMS noindex-Filtering, atomic file replacement, Forge-safe Storage, robots.txt-Update, Tages-Pipeline-Integration, Admin /admin/sitemap-management (E2)

Erledigt (Production-Bugfixes, 2026-02-22)

  • Public Explorer Refresh Timeout: cleanupOrphans() nutzte NOT IN (SELECT id FROM social_profiles) mit 400k+ Rows — lief 34 Minuten bis zum Timeout. Fix: LEFT JOIN WHERE NULL + Logging. (app/Services/PublicExplorer/PublicExplorerService.php)
  • Sitemap Management Auto-Refresh: "Jetzt generieren" lief async ohne UI-Feedback. Fix: synchroner Artisan::call() + Computed-Property-Invalidierung. (app/Livewire/Admin/SitemapManagement/Index.php)
  • robots.txt Crawl-Schutz: Disallow für alle /explorer?*q= Suchquery-Pfade, verhindert endlose Crawl-Permutationen. (public/robots.txt, app/Services/Sitemap/SitemapGenerator.php)