2016-10-02 2 views
0

Haben die nur index.html physische Seite, die das mehrere Komponenten als virtuell diejenigen mit den Routings einrichten wie dies dient:Angular 2 - Wie man eine Seite aktualisierbar macht?

{path: 'cat/:name', component: CatComponent} 

So kann ich von ihm dem Namen Zugriff auf die Katze leicht routingLink="/cat/tom" verwenden. Wenn ich jedoch die Seite aktualisiere oder den Link manuell in die Adressleiste des Browsers http://localhost:8080/cat/tom eintippe, erhalte ich den Fehler 404 not found.

Ich weiß, es ist ein häufiges Problem und Angular doc sagt:

In diesem Modus URL-Rewriting auf Serverseite erfordert, im Grunde Sie haben alle Links zum Eintrittspunkt der Anwendung neu zu schreiben (zB Index .html)

Aber es scheint nicht so einfach zu sein, wo habe ich die URL neu geschrieben? Ich erwarte, dass durch die Aktualisierung der /cat/tom ich die gleiche Seite und nicht die Root-Seite bekomme.

haben eine andere Art und Weise versucht, durch HashLocationStrategy statt Standard HTML5 und schrieb die urls auf die besonderen Ressourcen nginx wie /#/cat/tom verwenden, da sie von geraden Weg leicht zu erreichen sind, aber es ist eine andere scheitern - that's why.

Wie können Eckseiten aktualisiert werden? Ist nginx ein Spieler dort?

+0

Angenommen, Sie haben auch eine ähnliche Route zu diesem '{path: '', Komponente: MainComponent}', können Sie 'http: // localhost: 8080 /' erneut laden? – KTCO

+0

@KT., Yeah, die Wurzel wird immer ohne Proxies wie 'nginx' geladen, aber es wäre seltsam, wenn es nicht wäre. Aber alle anderen Pfade beantworten '404' bei jeder Auffrischung oder Anfrage – WildDev

+1

Ich habe nicht genug Reputation, um auf Serverfault zu antworten, aber meine nginx-Standortkonfiguration ist einfach:' location/{proxy_pass http: // upstreamname; } '. Außerdem verwende ich nicht die 'root' Einstellung in der Nginx Server Konfiguration. Ich benutze Angular2 und Seiten sind aktualisierbar. – KTCO

Antwort

0

Nun, es funktioniert jetzt.

Jetzt ist es möglich, den virtuellen Standort /cat/tom oder /cat/bob zu aktualisieren oder über die direkte URL darauf zuzugreifen. Die aktualisierte Seite verliert ihre URL nicht und wirft keinen 404 not found Fehler.

Nginx conf:

server { 
    listen  80; 
    server_name localhost; 
    root /; 

    #charset koi8-r; 

    #access_log logs/host.access.log main; 

    location/{ 
     rewrite ^/cat/([a-z]+)$/break; 
     proxy_pass http://localhost:8080/; 
    } 

    ... 
} 

Die root /; und neue location Richtlinie hinzugefügt werden.

Es ist eine Fehlschlagsidee, ^$ an der Regex zu ignorieren oder den hinteren Schrägstrich von proxy_pass Adresse wegzulassen.

Alles funktioniert jetzt wie erwartet.

Verwandte Themen