Lösung 1:
Ihre Option 1:
return 301 $scheme://$host$request_uri;
Ist genau das, was Sie wollen.
Nicht sicher, warum der rewrite ^ http://$host$request_uri? permanent;
Zeile würde eine 302 anstelle von 301 ergeben. Das ist die richtige Syntax, um zu erzwingen, dass sie eine 301 zurückgibt.
Lösung 2:
Technisch gesehen können Sie beide Optionen verwenden. Sie können arbeiten.
Verwenden Sie gemäß der NGINX-Dokumentation return
wenn du kannst . Es ist einfacher und schneller, da NGINX die Verarbeitung der Anfrage stoppt (und keine Regex verarbeiten muss). Darüber hinaus können Sie in 3xx einen Code angeben Serie:
return (301 | 302 | 303 | 307) url;
Wenn Sie ein Szenario haben, in dem Sie die URL mit einem regulären Ausdruck validieren oder Elemente in der ursprünglichen URL erfassen müssen (die sich offensichtlich nicht in einer entsprechenden NGINX-Variablen befinden), sollten Sie rewrite
verwenden . Das müssen Sie wissen rewrite
gibt nur Code 301 oder 302 zurück.
rewrite regex URL [flag];
Weitere Informationen zum Zurückgeben und Umschreiben finden Sie auf der NGINX-Website.