Ich möchte alle URLs umgeleitet bekommen, dienichtBeginnen Sie mit dem Präfix /abcd/
->, /abcd/
wobei Sie berücksichtigen sollten, dass der Server verwendet proxy_pass
.
server {
location / {
proxy_pass http://upstream-server/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
if ($request_uri = "/"){
return 301 /abcd/;
}
}
}
Ich denke daran, reguläre Ausdrücke und Negationen etwa wie folgt zu verwenden:
location ~ ^/(?!abcd.*).*$ {
return 301 /abcd/;
}
Gibt es eine andere/bessere Lösung?
Antwort1
Ich denke, das ist komplexer als nötig. Nginxwertet ausvom spezifischsten Block bis hinunter zum unspezifischsten.
In diesem Beispiel geht alles, was mit /abcd übereinstimmt, an den Proxy_Pass-Block, alles andere geht an den /-Block, der umgeleitet wird.
Ich habe das nicht getestet. Probieren Sie es aus und wenn es nicht funktioniert, kann ich weiter darüber nachdenken.
location /abcd {
proxy_pass (etc);
}
location / {
return 301 /abcd/;
}