diff --git a/app.py b/app.py index ba5294b..f092e5d 100644 --- a/app.py +++ b/app.py @@ -244,9 +244,28 @@ def _escape(value: str) -> str: # Routen # --------------------------------------------------------------------------- +def _handle_link(target_url: str): + """Leitet weiter oder liefert die Preview-Seite für Bots.""" + if target_url is None: + abort(404) + + # Social-Media-Bots / Preview-Crawler bekommen die Metadaten-Seite + if _looks_like_bot(): + return Response(_render_preview_page(target_url), mimetype="text/html") + + # Alle anderen werden direkt weitergeleitet + return redirect(target_url, code=302) + + @app.route("/") def index(): routes = load_config() + + # Ist die Hauptdomain (/) konfiguriert, wird sie weitergeleitet + # statt die Linkliste anzuzeigen. + if "/" in routes: + return _handle_link(routes["/"]) + rows = "".join( f'
  • {_escape(p)} → ' f'{_escape(r)}
  • ' @@ -270,15 +289,7 @@ def link_redirect(path: str): if target_url is None: target_url = routes.get(path) - if target_url is None: - abort(404) - - # Social-Media-Bots / Preview-Crawler bekommen die Metadaten-Seite - if _looks_like_bot(): - return Response(_render_preview_page(target_url), mimetype="text/html") - - # Alle anderen werden direkt weitergeleitet - return redirect(target_url, code=302) + return _handle_link(target_url) @app.errorhandler(404)