404-Seite bei Aktualisierung auf AngularJS-Site erhalten?

8

Ich bekomme immer eine 404 Seite wenn ich:

1.) Aktualisieren Sie jede Seite auf meiner Angularjs-Seite (neben der Stammseite)

oder

2.. Klicken Sie auf Zurück , um von einer 404-Seite zur Stammseite zu wechseln (die Stammseite ist eine 404)

Hier ist mein .config() code

%Vor%

Ich bin auf diese ähnliche Frage gestoßen, verstehe aber die Antworten nicht oder verstehe sie nicht.

AngularJS - Warum beim Wechseln URL-Adresse $ routeProvider scheint nicht zu funktionieren und ich bekomme einen 404 Fehler

Die angenommene Antwort besagt, Apache neu zu konfigurieren, um alle Pfade zum Root neu zu konfigurieren. Meine Seite befindet sich auf Github Pages. Ich habe eine .htaccess Datei in meinem gh-pages Repo, aber ich habe keine Ahnung, wie man es konfiguriert, um alle Pfade an den Stamm zu senden.

Die Antwort sagt, dass das <base> -Element wie <base href="/" /> noch eine andere Sache ist, aber wo würde ich das platzieren? In meinem index.html ? Wenn ja, am oberen oder unteren Ende dieser Datei? Würde ich den href Wert auch auf / setzen?

    
Community 28.07.2013, 20:26
quelle

4 Antworten

13

Ich habe hier eine Lösung gefunden: Ссылка

Hier ist der kurze Beitrag:

  

angularjs stellt html5Mode bereit, wodurch Ihre App anstelle von Hashtags eine Pushstate-basierte URL verwendet. Dies erfordert jedoch serverseitige Unterstützung, da die generierten URLs ebenfalls ordnungsgemäß gerendert werden müssen.

     

Dies funktioniert tatsächlich mit den benutzerdefinierten 404-Seiten von github-Seiten, obwohl es nur für benutzerdefinierte domänenfähige Seiten verfügbar ist.

     

Zuerst kopiere alles in index.html auf 404.html. Dann füge das zu deiner App hinzu:

%Vor%      

Beachten Sie, dass Sie, wenn Sie in eckiger Version 1.1.5 sind, sicherstellen, dass html5Mode ordnungsgemäß funktioniert.

Nach diesen Vorschlägen konnte ich meine Website richtig funktionieren lassen. Jetzt, wenn ich Reload drücke, wird die Seite richtig geladen.

    
user883807 29.07.2013, 21:11
quelle
3

Die bessere Option wäre, jede URL auf die index.html umzuleiten:

%Vor%

Dies wird KEINE 404-Antwort auf irgendeiner Seite verursachen.

    
Christian Romeni 21.06.2015 18:42
quelle
2

Github-Seiten dienen nur statischen Dateien. Es liest keine Konfigurationseinstellungen, die Sie für Apache in .htaccess haben.

Wenn Sie eine AngularJS-App von Github-Seiten aus ausführen möchten, können Sie html5Mode nicht verwenden.

    
Clark Pan 29.07.2013 03:14
quelle
1

Ich verwende meine angularjs-Anwendung mit Nginx auf Vagrant. Und mit der gleichen Art von Problem konfrontiert. Wenn ich den Browser mit einer URL neu lade, bekomme ich eine 404-Seite.

Ich habe den html5mode in der Hauptjs-Datei aktiviert. Wenn Sie html5Mode aktiviert haben, wird das # -Zeichen nicht mehr in Ihren URLs verwendet. Das Symbol% ​​co_de% ist nützlich, da es keine serverseitige Konfiguration erfordert. Ohne # sieht die URL viel schöner aus, erfordert aber auch serverseitige Änderungen.

Hier sind einige Änderungen zu tun:

  • Öffnen Sie die nginx-Konfigurationsdatei ( # ) im Ordner nginx.conf (der Pfad hängt von Ihrem nginx-Installationsverzeichnis ab).
  • Finde /etc/nginx/sites-enabled und ersetze es durch try_files $uri $uri/ =404;
  • Speichern Sie die nginx-Konfigurationsdatei
  • Starten Sie den nginx try_files $uri $uri/ /index.html; neu

Und ich habe versucht, die Seite nach den obigen Änderungen neu zu laden. Es funktioniert wie erwartet.

    
Venkat M 07.04.2016 16:34
quelle