Mehrsprachiger Speicher als symbolisches Unterverzeichnis auf Nginx, das 'keine Route zur Seite' zurückgibt
-
12-12-2019 - |
Frage
wir mussten unseren mehrsprachigen Shop mit dem einrichten subdirectory/symlink
beschriebene Methode hier.(lesen Sie, warum @ bottom)
Wie wir es gemacht haben.
Wir haben den Index kopiert.php in ein Unterverzeichnis und symbolisierte alle Ordner.Der base url
wurde eingestellt auf domain.com/en
Problem/Frage Jetzt, wenn ich öffne domain.com/en Ich kann die Website sehen und sie zeigt die englische Version.Das einzige ist, dass alle Kategorie- und Produktlinks einen Fehler 'Keine Route zur Seite' erzeugen.Anstatt die Kategorie oder das Produkt anzuzeigen.Nun, wie kann das sein?
Beispiel
So https://domain.com/en/funkyshoes
öffnet nicht die Kategorie Funkyshoes und Funkyshoes auch nicht https://domain.com/funkyshoes
übrigens.https://domain.com/en/funkyshoes
zurückgeben => no route to page
https://domain.com/funkyshoes
zurückgeben => https://domain.com/en
warum nicht?da wir mehr als 1 Multistore haben und nicht jedem Store einen Lang-Store_code wie en / de / fr geben können, haben wir auch einen Multistore mit unterschiedlichen Domains pro Store und den anderen mit der Methode / en, / de, / fr aus der Hauptdomain.
Lösung 2
Eine noch bessere Lösung ist:
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite /(../)? /$1index.php?$args;
}
weil wir einige spezielle Standortregeln für Katalog | Kasse | Kunden hatten.Das Problem war, dass alle auf @rewrite verwiesen haben - auf diese Weise mussten wir ALLE Standortbefehle neu schreiben, die eingerichtet wurden, um auch eine separate Übereinstimmung für / en und später / fr und / de zu haben.....
Also haben wir uns das einfachste Fallback-Umschreiben ausgedacht, das zuerst für / und dann für / (zweibuchstabiger Code) getestet wird....und darauf basierend umschreibt
scheint gut zu funktionieren
Außerdem muss die Store_code-Suche geändert werden.Aufgrund des / en funktionieren die Variablen http_host oder server nicht mehr.
Eine mögliche Lösung finden Sie hier:https://stackoverflow.com/questions/30078679/nginx-conf-w-multiple-maps-to-same-variable
Andere Tipps
Dies ist ein NGINX-Problem.
Das Hinzufügen zu einer conf-Datei löste unser Problem
location /en {
rewrite ^/en(.*)$ /en/index.php last;
}