Ich muss meinen Reverse-Proxy so konfigurieren, dass der folgende Parameter am Ende der URL hinzugefügt wird: &locale=de-de
Das funktioniert fast:
rewrite ^(.*)$ $1&locale=de-de break;
Das Problem ist jedoch, dass ich "& locale = de-de" nur anhängen muss, wenn es nicht bereits vorhanden ist und wenn ein "?" in der url ...
Kann ich Hilfe bei der Formulierung des richtigen regulären Ausdrucks erhalten, um dies zu tun?
Eine andere Frage: Warum wird das Fragezeichen in meiner URL nicht angezeigt, wenn ich
Folgendes verwende: $ uri? $ Args
Oder $ uri $ is_args $ args übersetzt die nicht codierte URL und das Fragezeichen wird als% 3f angezeigt.
Ideen?
BEARBEITEN: Es scheint, dass dieses Verhalten bei der Verwendung in Kombination mit proxy_pass vorhanden ist. Bei einem einfachen Umschreiben funktioniert es wirklich gut.
Die Übereinstimmung für
rewrite
enthält nicht die Abfrageparameter, daher müssen Sie sie an anderer Stelle testen.Versuchen:
quelle
rewrite
muss einlast
sein, wenn sicher. BearbeitetDer
rewrite
ändert nicht die Anforderungsparameter, sondern nur den Pfad des URI. Meiner Erfahrung nach führt das Durcheinander mit den Neuschreibungen zu merkwürdigen Zyklen, in denen der neue Parameter ad infinitum angehängt wird. Rewrite ist in Nginx wahrscheinlich nicht der richtige Weg.Stattdessen sollten Sie die
$args
Variable mithilfe derset
Direktive ändern :quelle
$args
dass mutiert werden sollte. Siehe stattdessen @ AlexanderAzarovs Lösung.