Ich habe eine Python Flask App auf Heroku (Cedar Stack) mit zwei benutzerdefinierten Domains (eine mit und ohne die www-Subdomain). Ich möchte alle eingehenden Anfragen an das www umleiten. Version der angeforderten Ressource (die Umkehrung von diese Frage ). Ich denke, ich brauche eine WSGI-Middleware dafür, aber ich kann kein gutes Beispiel finden.
Wie mache ich das?
Eine einfachere Lösung als das Erstellen einer separaten Heroku-App wäre eine before_request
-Funktion.
Dadurch werden alle Nicht-WWW-Anforderungen mit einer "HTTP 301 Moved Permanently" -Antwort an www umgeleitet.
Laut Heroku Docs haben Sie die richtige Idee, die www Subdomain (zB www.foo.com) vs. apex domain (zB foo.com) zu verwenden. Ihr Vorschlag dafür ist eine DNS-Layer-Umleitung:
Um zu zitieren:
Subdomain-Umleitung
Subdomain Redirection führt zu einer 301 permanenten Weiterleitung zum angegebene Subdomain für alle Anfragen an die Apex-Domain, also alle aktuellen und zukünftige Anfragen werden korrekt weitergeleitet und der vollständige www-Hostname ist im Feld Standort des Benutzers angezeigt.
Fast alle DNS-Anbieter bieten Domain-Umleitungsdienste an - manchmal auch Domänenweiterleitung genannt. DNSimple bietet eine praktische URL Umleitung gesehen hier Umleitung von der heroku-sendpoint.com Apex Domain zur Subdomain www.heroku-sendpoint.com.
Quelle: Ссылка
Hoffe das hilft!
Ein möglicher Ansatz wäre das Hinzufügen einer Funktion zum Anhören von request_started
die entsprechende Umleitung.
Dieses Signal wird gesendet, bevor eine Anfrageverarbeitung gestartet wird, aber wenn die Der Anfragekontext wurde eingerichtet. Weil der Anfragekontext schon ist gebunden, kann der Teilnehmer auf die Anfrage mit dem Standard global zugreifen Proxies wie Anfrage.
Am Ende habe ich eine zweite Heroku-App erstellt, die den nicht-www-Hostnamen diesem zugewiesen hat und eine Flask-Route verwendet, um auf die WWW-Version umzuleiten, wobei der Pfad intakt bleibt.