Puncte:0

nginx - Încercarea de a redirecționa calea cu variabila intern eșuează

drapel cm

Aș dori să redirecționez cererea către un fișier din

/path/to/file/content?path=file.pdf

la

/new/path/to/file/file.pdf

sub acelasi domeniu.

Am încercat reguli simple de rescriere sau așa.

locație ~ ^/cale/la/fișier/conținut? cale=(.*) {
   returnează 301 /new/path/to/file/$1;
}

Din păcate, nginx nu înțelege variabila. ce fac greșit? Are cineva un pont pentru mine, va rog? Din păcate, nu știu multe despre reqex. Mulțumesc mult!

Puncte:0
drapel gr

Spre deosebire de apache regulile de rescrie ambele Locație și rescrie Directivele nginx funcționează cu așa-numitele normalizat URI (vezi Locație directivă documentație pentru a afla ce înseamnă) care nu include partea de interogare. Verificați dacă cale Argumentul de interogare nu este gol și faceți o redirecționare dacă URI-ul solicitării se potrivește cu modelul dvs. folosind următorul fragment de configurare:

if ($arg_path) {
    rescrie ^/path/to/file/content /new/path/to/file/$arg_path? permanent;
}
Christian avatar
drapel cm
Bună Ivan, mulțumesc foarte mult pentru răspuns. Am copiat fragmentul în bloc Locație / { } Dar apoi nginx ignoră această regulă. Dar dacă șterg partea if, adică scriu doar rescrie..., redirecționarea aproape funcționează. Browserul spune doar /new/path/to/file/, dar numele fișierului lipsește.
Ivan Shatsky avatar
drapel gr
Ne pare rău, desigur că este greșeala mea de tipar, ar trebui să fie `$arg_path` în loc de `$arg_file`.
Christian avatar
drapel cm
Totul este bine, mă ajuți foarte mult. Mulțumesc foarte mult. Acum, declarația if funcționează. Din păcate, adresa din browser încă se termină la /new/path/to/file/. Numele fișierului lipsește.
Ivan Shatsky avatar
drapel gr
Browserele utilizatorilor finali memorează de obicei în cache redirecționările HTTP 301 permanente, astfel încât să poată fi memorate cache URI din configurația anterioară. Goliți memoria cache a browserului sau încercați din fereastra incognito.
Christian avatar
drapel cm
Scuze, ai dreptate, ce prost din partea mea. Mi-ai făcut ziua, mulțumesc frumos!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.