Oeffentliche Strecke durchgaengig auf das Editorial-Design umgestellt und
datengetrieben gemacht:
- Newsrooms-Verzeichnis + Newsroom-Detailseiten (Suche, Pagination)
- Preise-Seite neu (Abos via Plan, Einzel-PM via config/billing, Add-ons via
config/credits); Texte ausgelagert nach lang/{de,en}/pricing.php
- Pricing-Teaser-Komponente auf den Startseiten + Preise-Link in Header/Footer
- Statische Seiten im Editorial-Design ueber neue Komponente x-web.static-page:
impressum, datenschutz, agb, cookies, faq (Akkordeon), hilfe, kontakt,
ueber-uns, api (altes Theme/gradient-hero entfernt)
- Header/Footer-Linkpflege: tote #-Anker raus, FAQ/Hilfe/Cookies verlinkt,
"Anmelden" fuehrt in den Hub
- Legacy-URL-Redirects (.html, presskit->newsroom, Regionen)
- Datums-Bugfix in Feed-Komponenten
Tests: NewsroomPage, PreisePage, PricingTeaser, StaticPages, NavigationLinks,
LegacyRedirect. Doku in docs/frontend aktualisiert.
Co-authored-by: Cursor <cursoragent@cursor.com>
9.5 KiB
1. Hauptnavigation (rechts oben)
| Seite | Link | Dahinter | Relaunch |
|---|---|---|---|
| Home | / |
Startseite | Portal |
| Registrierung | /de/registration.html |
Account-Anlage | → Hub (pressekonto) |
| Login | /de/login.html |
Anmeldung | → Hub (Sanctum, kein eigener Login am Portal) |
| Preisliste | /de/pricelist.html |
Tarife | → Hub (neue Tarifstruktur Einzel/Starter/…/Agency) |
| Service | /de/service.html |
Leistungsübersicht / Verkaufsseite | wird zu veroeffentlichen |
| Kontakt | /de/contact.html |
Kontakt | Portal + Hub (auch hier muss deutlich werden, dass der Hub das ganze Backend System ist) |
2. Region/Sprache
| Variante | Link | Relaunch |
|---|---|---|
| Deutsch | / |
Portal |
| Deutsch (CH) | /de-ch |
raus |
| Deutsch (AT) | /de-at |
raus |
| English | /en |
Portal |
3. „Presse"-Dropdown — Ratgeber/SEO-Content (12 Seiten)
Das ist editorial wertvollster Teil: statische Ratgeber-Seiten, die wahrscheinlich organischen Long-Tail-Traffic ziehen.
| Seite | Link |
|---|---|
| Pressemitteilung schreiben | /de/presse/pressemitteilung-schreiben.html |
| Aufbau Pressemitteilung | /de/presse/pressemitteilung-aufbau.html |
| Pressemitteilung Nutzen & Einsatz | /de/presse/pressemitteilung-nutzen.html |
| Pressemappe | /de/presse/pressemappe.html |
| Redakteure & Journalisten | /de/presse/redakteure-journalisten.html |
| Pressemitteilung Beispiel | /de/presse/pressemitteilung-beispiel.html |
| Pressekonferenz | /de/presse/pressekonferenz.html |
| Deutsche Presse Agentur | /de/presse/deutsche-presseagentur.html |
| Redaktion | /de/presse/redaktion.html |
| Pressestelle | /de/presse/pressestelle.html |
| Pressesprecher | /de/presse/pressesprecher.html |
| Presseausweis | /de/presse/presseausweis.html |
Relaunch: Diese URLs unbedingt 1:1 erhalten oder sauber 301-redirecten — hier steckt der SEO-Wert. Editorial passen sie zu beiden Portalen, ggf. sogar besser zu presseecho (Kontexttiefe). Entscheidung offen, wo sie inhaltlich angesiedelt werden. Hier würde ich eine FAQ Seite machen, die alle Themen beinhaltet und sauber 301-redirectet
4. Kategorien (14 Stück)
/de/category/{slug}.html — Listenseiten je Themenrubrik:
Handel · IT · Finanzen · Reisen · Kultur · Politik · Medizin · Sport · Motor/Verkehr · Haus · Mode · Sonstiges · Wissenschaft/Forschung · Recht
Relaunch: Diese Kategoriestruktur ist die Backbone für Migration + Boost-Logik (Kategorieseiten sind Teil deiner Boost-Platzierung). Beim Relaunch zu prüfen: Übernimmst du alle 14 unverändert, oder konsolidierst du? „Sonstiges" als Auffangbecken ist für deine Content-Score-/Trust-Logik suboptimal.
5. Content-/Detailseiten (die eigentlichen Templates)
| Typ | URL-Muster | Funktion | Relaunch |
|---|---|---|---|
| PM-Detailseite | /de/{slug}.html |
Einzelne Pressemitteilung | Portal — Kern-Template |
| Kategorie-Liste | /de/category/{slug}.html |
PMs je Rubrik, paginiert | Portal |
| Pressemappe (Presskit) | /de/presskit/{id}/{slug}.html |
Firmenprofil + alle PMs der Firma | Portal = deine „Firmen-Detailseite" |
| Stream + Paginierung | /de?page=N |
732 Seiten Archiv | Portal — aber Paginierungs-/Indexierungsstrategie überdenken |
Die Presskit-Seite entspricht funktional exakt deiner geplanten Firmen-Detailseite (Header, Stammdaten, Boilerplate, Kontakt, gefilterte PM-Liste). Gutes Mapping — du baust das also nicht neu, sondern modernisierst ein bestehendes Konstrukt.
6. Footer / Legal
| Seite | Link | Relaunch |
|---|---|---|
| Impressum | /de/imprint.html |
Portal + Hub (pflicht, pro Domain) |
| AGB | /de/terms.html |
Hub (Vertragsbeziehung läuft über pressekonto) |
| Datenschutz | /de/privacypolicy.html |
Portal + Hub |
Einordnung für den Relaunch
Wenn ich das gegen deine Hub-and-Spoke-Architektur lege, fällt die Seitenmenge in drei klare Eimer:
Bleibt am Portal (businessportal24.com & presseecho.de = öffentlicher Spoke): Home/Stream, PM-Detail, Kategorie-Listen, Pressemappe/Firmen-Detail, Ratgeber-Seiten, Impressum, Datenschutz, Kontakt.
Wandert in den Hub (pressekonto): Registrierung, Login, Preisliste/Tarife, AGB, und alles dahinter (PM erstellen, Pressemappe anlegen, Account). Das deckt sich mit deinem Prinzip „Portale haben keine eigenen Login-Systeme".
Relaunch-Mapping der Bestands-URLs (IST 17.06.2026)
Alle Alt-URLs werden per 301 auf die neue Struktur geleitet (Implementierung
in routes/web.php, Closure $htmlRedirect + Regions-Routen; Test:
tests/Feature/Web/LegacyRedirectTest.php). Die neue Struktur liegt unter dem
Ausgaben-Präfix /{de|en}/….
| Alt-URL (Altsystem) | Ziel (301) | Status |
|---|---|---|
/ |
/de (Default-Ausgabe) |
✅ |
/de/{slug}.html (PM) |
/de/press-release/{slug} |
✅ |
/de/category/{slug}.html |
/de/category/{slug} |
✅ |
/de/presskit/{id}/{slug}.html |
/de/newsroom/{slug} (Lookup über companies.legacy_id; Fallback /newsrooms) |
✅ |
/de/presse/*.html (12 Ratgeber) |
/de/faq (konsolidiert) |
✅ |
/de/pricelist.html |
/de/preise |
✅ |
/de/service.html |
/de/veroeffentlichen |
✅ |
/de/contact.html |
/de/kontakt |
✅ |
/de/imprint.html |
/de/impressum |
✅ |
/de/terms.html |
/de/agb |
✅ |
/de/privacypolicy.html |
/de/datenschutz |
✅ |
/de/registration.html |
Hub pressekonto/register |
✅ |
/de/login.html |
Hub pressekonto/login |
✅ |
/de/kategorien.html (Übersicht) |
/de (Übersicht entfällt) |
✅ |
/de-ch, /de-at (+ Subpfade) |
/de |
✅ |
Bewusst auf später verschoben (eigene Slice):
- Regionen-Übersichten
/region/{slug}(Punkt 3 der öffentlichen Strecke) – aktuell leiten nur die entfallenen Sprachvariantende-ch/de-atauf/de. - Tarife/AGB im Hub:
pricelistzeigt vorerst auf die öffentliche SEO-Seite/preise; die buchbare Tarifstruktur (Checkout) lebt im Hub.
Erledigtes Feinmapping:
- Presskit→Newsroom:
presskit/{id}/{slug}löst über den Unique-Indexcompanies.(legacy_portal, legacy_id)den heutigen Newsroom auf und leitet 301 direkt auf/newsroom/{slug}(nur bei aktiver Firma mit ≥1 veröffentlichter Meldung; sonst Fallback/newsrooms). - Preise datengetrieben & überall sichtbar: Tarif-Teaser auf der Startseite
aus
Plan::active()(x-web.pricing-teaser); Preise-Link in Header-Utility-Bar und Footer. Test:tests/Feature/Web/PricingTeaserTest.php. - Statische Seiten im Editorial-Design (Rebuild abgeschlossen): Pflicht-
seiten
impressum,datenschutz,agb,cookies(Prosa über.pm-body) sowiefaq(natives<details>-Akkordeon),hilfe(Support-Landing),kontakt(Kontaktwege; Formular wartet auf POST-Handler — als TODO markiert),ueber-uns(Kennzahlen/Mission/Werte/Team/Timeline) undapi(Features/Code-Beispiel/Integrationen). Tote Doku-/Anker-Links durch echte Ziele bzw. Hinweise ersetzt. Gemeinsames Gerüst:x-web.static-page. - Header/Footer-Linkpflege:
site-header/site-footerohne tote#-Links — FAQ/Hilfe/Cookies verlinkt, „Anmelden" führt in den Hub ({domain_portal_url}/login), nicht verlinkte Platzhalter entfernt. Test:tests/Feature/Web/NavigationLinksTest.php. Gemeinsames Gerüst: wiederverwendbare Komponentex-web.static-page(site-header, Breadcrumb, Masthead, site-footer). Altes Theme (livewire:web.header,gradient-hero) entfernt. Rechtstexte sind weiterhin Platzhalter (vor Go-Live ersetzen). Test:tests/Feature/Web/StaticPagesTest.php. /preise-Seite im Editorial-Design (Rebuild abgeschlossen): Reihenfolge Abo-Tarife → Einzel-PM → Add-ons. Datengetrieben überPlan::active(),config('billing.single_pm_price_cents')undconfig('credits.*'); Route$preisePage-Closure. Texte ausgelagert inlang/{de,en}/pricing.php(Schlüsselpricing.*), damit Portal/Hub einheitlich ziehen können. Add-on- Lineup (Magic-Link-Pfade) ist mit TODO-Kommentaren als „noch im Rework" markiert. Test:tests/Feature/Web/PreisePageTest.php.