Meine AngularJS-Anwendung verwendet
Wenn ein Benutzer myapp.com eingibt, dann den Server index.html, was ich will. Wenn der Benutzer nun Links auf dieser Seite auswählt, zeigt der ui-router die entsprechenden Vorlagen in der index.html an und die URL-Leiste des Browsers zeigt die folgenden Adressen korrekt an:
%Vor%Beachten Sie, dass meine Konfiguration wie folgt eingerichtet ist:
%Vor%Wenn ein Benutzer nun auf "Aktualisieren" klickt, vergisst der Browser, dass er auf index.html war und versucht die Webseite zu finden: myapp.com/city/london etc, die natürlich nicht existiert. Es zeigt dann eine Fehlerseite an, die besagt, dass die Seite nicht existiert.
Wie kann ich mit dieser Situation umgehen? Ich möchte, dass ein Benutzer auf myapp.com/city klickt, um zu aktualisieren, und im Idealfall zurück zu myapp.com/city
geheBEARBEITEN
Wenn Sie HTML5-Modle-Routing mit eckigen verwenden, müssen Sie Ihrem Server mitteilen, wie er mit der Anfrage umgehen soll. Wenn Sie auf einer dieser Routen ankommen, zB wenn Sie versuchen, zu myapp.com/city zu gelangen, erhalten Sie eine Fehlermeldung Server wird nach einer city.html-Seite an der Wurzel des Servers suchen, die nicht da sein wird. Wenn Sie von Ihrer App aus zu dieser Route navigieren, funktioniert das problemlos. Wenn Sie das jedoch kopieren und in die Adressleiste Ihres Browsers einfügen, erhalten Sie einen 404, weil der Server nicht versteht, wie Sie zu city.html gelangen. Eine einfache Lösung wäre, den HTML5-Routing-Modus zu vermeiden. Gemäß den eckigen Dokumenten müssen Sie einige URL-Umschreibungen vornehmen, damit Ihr Server versteht, wie diese Seiten zu routen sind:
Wenn Sie den HTML5-Modus verwenden, müssen Sie die URL auf der Serverseite neu schreiben müssen alle Ihre Links zum Einstiegspunkt Ihrer Anwendung neu schreiben (z. B. index.html)
Sie können sich auch hier ansehen. In dieser Antwort wird erläutert, wie Sie HTML5-Routing mit Ihrem Server arbeiten lassen.
Tags und Links angularjs