2017-06-30 5 views
3

i Probleme, mich für meinen Config hier, wie ich mydomain.com arbeiten will -> Umleitung Sprache zu korrigieren: mydomain.com/en/ oder mydomain.com/fr/nginx mit Winkel 4

Ich habe zwei eckige Builds mit i18n, eins für jede Sprache. die Umleitung mit Sprache funktioniert, aber eine direkte Verbindung mit Winkel 2 nicht: wenn ich gehe zu mydomain.com/fr/connect -> 404

Hier ist meine nginx Konfiguration

map $http_accept_language $lang { 
    default en; 
    ~*^fr fr; 
} 

server { 
    listen 80; 
    server_name domain.com www.domain.com; 
    root /usr/share/nginx/html; 
    index index.html index.htm; 
    location =/{ 
     rewrite "^.$" /$lang/ break; 
    } 
    location = /$lang/ { 
     try_files $uri $uri/ /index.html; 
    } 
} 

wenn einige von euch weiß das, ich bin gerade dort stecken, ich bin ein Nginx Anfänger:/

+0

Ihr Problem ist, dass Ihre Route 'yourapp/fr/connect' ist nicht eine tatsächliche Route wie Sie zum Beispiel mit PHP-Servern gewohnt sind. Es ist eigentlich eine Möglichkeit für Angular, die entsprechenden Vorlagen zu holen. Sie haben also keinen Zugriff darauf, indem Sie die URL eingeben. Ich benutze die hashLocationStrategy als Workaround: 'RouterModule.forRoot (appRoutes, {useHash: true})' – trichetriche

+0

wird versuchen, danke – mcfly

+0

Nur versuchen, das zu tun: Eine schnelle und einfache Möglichkeit ist, Ihren Server zu konfigurieren, um das Haus zu laden Seite, wenn eine URL des Formulars http: // yourhost/* angefordert wird. Dies könnte die Lösung nein sein? – mcfly

Antwort

3

Der zweite Standort Block ist falsch. Sie müssen wahrscheinlich alles an index.html (andere als Ressourcendateien) gerichtet sein. Sie könnten versuchen, etwas wie folgt:

map $http_accept_language $lang { 
    default en; 
    ~*^fr fr; 
} 

server { 
    listen 80; 
    server_name domain.com www.domain.com; 
    root /usr/share/nginx/html; 
    index index.html index.htm; 
    location =/{ 
     return 302 /$lang/; 
    } 
    location/{ 
     try_files $uri $uri/ /index.html; 
    } 
} 
+0

Umleitung zu Sprache funktioniert, aber wenn ich domain.com/fr/connect mit einem direkten Link mit einem 500 internen Server Fehler – mcfly

+0

zugreifen oh ich bin Idiot hatte nur ein wenig zu korrigieren try_files $ uri $ uri//index.html; => try_files $ uri $ uri//$lang/index.html; Danke vielmals – mcfly