Rechtsseiten crawlbar: /datenschutz /agb /impressum als eigenständige HTML-Seiten (einzige Quelle, indexierbar) statt 302→Hash; SPA-Module holen Inhalt per fetch+inject (kein Text-Duplikat); Kontaktformular in geteilte contact-form.js; Sitemap+SW ergänzt, v1278

This commit is contained in:
rene 2026-06-09 18:21:49 +02:00
parent 43b6292d08
commit 40d117874b
13 changed files with 1047 additions and 782 deletions

View file

@ -670,6 +670,9 @@ async def sitemap():
("https://banyaro.app/help", "monthly", "0.7"),
("https://banyaro.app/knigge", "monthly", "0.7"),
("https://banyaro.app/partner", "monthly", "0.6"),
("https://banyaro.app/datenschutz", "yearly", "0.3"),
("https://banyaro.app/agb", "yearly", "0.3"),
("https://banyaro.app/impressum", "yearly", "0.3"),
]
try:
@ -2685,15 +2688,17 @@ async def wurfboerse_page():
# Rechtsseiten: Pfad-URLs (SEO-Footer, App-Store-Metadaten, E-Mails) auf die
# SPA-Hash-Routen umleiten — die Inhalte leben als SPA-Seiten (#agb, …).
# Rechtsseiten als eigenständige, crawlbare HTML-Seiten ausliefern (einzige Inhaltsquelle).
# Die SPA-Module (#agb, #datenschutz, #impressum) holen denselben Inhalt per fetch und
# injizieren ihn — so bleibt die In-App-Ansicht erhalten, ohne Text-Duplikat.
# Muss VOR dem SPA-Fallback registriert sein.
@app.get("/agb")
@app.get("/datenschutz")
@app.get("/impressum")
async def legal_page_redirect(request: _Request):
from fastapi.responses import RedirectResponse
async def legal_page(request: _Request):
page = request.url.path.strip("/")
return RedirectResponse(f"/#{page}", status_code=302)
return FileResponse(f"{STATIC_DIR}/{page}.html",
headers={"Cache-Control": "max-age=3600"})
# SPA Fallback — ALLE nicht-API-Routen gehen zur index.html