Puncte:0

Adăugați parametrul URL pentru a solicita URI folosind Nginx

drapel ng

Încerc să atașez parametri URL la anumite URI de solicitare din blocul serverului.

Asta am pana acum:

if ( $request_uri = "/testing/signup" ) {
    rescrie ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 ultima;
}

locație /testare/ {
    try_files $uri $uri/ /testing/index.php;
}

Cu toate acestea, acest lucru funcționează numai atunci când URI-ul cererii inițiale nu are niciunul dintre parametrii URL proprii (de ex. www.example.com/testing/signup?abc=hello) Doresc să păstrez parametrii URL inițiali și să-i adaug pe ai mei.

Am încercat să schimb expresia regex la if ( $request_uri ~* "^/testare/înscriere" ) ​​{ dar acest lucru provoacă o buclă.

Poate cineva să ajute?

**** ACTUALIZAȚI ****

Am actualizat pentru a încerca asta:

locație /testare/ {
    rescrie ^/testing/signup$ /testing/signup?org=1231564 pauză;
    try_files $uri $uri/ /testing/index.php$is_args$args;
}

Acest lucru nu trece parametrii URL, dar la verificarea jurnalelor se poate vedea că atât parametrul URL existent, cât și cel nou sunt în variabila args.Dar cum le introduc în cererea GET pentru ca serverul să poată acționa asupra lor?

2021/08/03 02:27:07 [notificare] 3202#3202: *27 „^/testing/signup$” se potrivește cu „/testing/signup”, client: 146.75.168.54, server: example.com, cerere: „ GET /testing/signup?id=1 HTTP/2.0”, gazdă: „www.example.com”
2021/08/03 02:27:07 [notificare] 3202#3202: *27 date rescrise: „/testing/signup”, args: „org=1231564&id=1”, client: 146.75.168.54, server: example.com , cerere: „GET /testing/signup?id=1 HTTP/2.0”, gazdă: „www.example.com”
drapel sv
Bun venit la ServerFault. Trebuie să utilizați `$uri` în condiția `if`. Btw, `$request_uri` conține și argumentele. De aceea, codul dvs. nu funcționează dacă solicitarea conține propriii parametri, cum ar fi `www.example.com/testing/signup?abc=hello`. În general, parametrii originali sunt atașați la sfârșit atunci când încercăm să adăugăm propriii parametri.
Puncte:1
drapel sv

Bun venit la ServerFault.

Variabila request_uri conține „URI de solicitare originală completă (cu argumente)”. De aceea, o solicitare cu un parametru existent nu a funcționat pentru codul original. În schimb, am putea folosi uri acesta este normalizat. Deci, următorul cod ar funcționa...

if ( $uri = "/testare/înscriere" ) ​​{
    rescrie ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 ultima;
}

locație /testare/ {
    try_files $uri $uri/ /testing/index.php;
}

Vă rugăm să știți că parametrii originali sunt atașați la parametrii noștri adăugați manual. Deci, pentru o cerere de genul www.example.com/testing/signup?abc=hello, URI-ul este rescris în www.example.com/testing/signup?org=7689879&type_id=65454&abc=hello.

Michael Hampton avatar
drapel cz
Acest lucru va funcționa perfect. Desigur, va avea ca rezultat și o buclă de redirecționare infinită, deoarece a redirecționat înapoi la aceeași cale URL. Dar asta e cu totul altă întrebare.
Neil Simpson avatar
drapel ng
Da, asta e problema, continui să intru într-o buclă. Deci, există o soluție care să nu provoace o buclă?
drapel sv
Asta e o altă întrebare. Creați o altă întrebare și postați configurația completă pentru a analiza problema buclei infinite.
Neil Simpson avatar
drapel ng
Nu chiar o întrebare diferită, așa că ar fi blocată. Problema buclei este în întrebarea inițială și o soluție care provoacă o buclă nu este cu adevărat o soluție. Soluția ta nu funcționează @pothi-kalimuthu

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.