Puncte:3

Efectul semnului de întrebare final (?) în URI-ul de înlocuire al directivei de rescriere nginx

drapel cn

Încerc să înțeleg diferența dintre rescrie ^/search/(.*)$ /search.php?q=$1 și rescrie ^/search/(.*)$ /search.php?q=$1?. Diferența este trasarea ? în URI-ul de înlocuire.

Dacă URI-ul cererii este /search/apple?opt=123 atunci cum sunt rescrise URI-urile diferit?

bănuiesc pentru rescrie ^/search/(.*)$ /search.php?q=$1 va fi /search.php?q=apple&opt=123 si pentru rescrie ^/search/(.*)$ /search.php?q=$1? va fi /search.php?q=mere? Dar nu sunt sigur.

drapel sv
Răspuns posibil https://serverfault.com/a/973708/102173
Logan Lee avatar
drapel cn
Mina @PothiKalimuthu este un caz puțin mai complex.
drapel sv
Bănuirea ta menționată în OP este corectă.
Logan Lee avatar
drapel cn
@PothiKalimuthu ok, mulțumesc!
Puncte:2
drapel sv

Conform https://nginx.org/r/rewrite...

Dacă un șir de înlocuire include noile argumente de solicitare, argumentele cererii anterioare sunt atașate după ele. Dacă aceasta este nedorit, punând un semn de întrebare la sfârșitul unui șir de înlocuire evită să le fie anexate

Iată codul minim pentru a testa acest scenariu...

# fișier de configurare /etc/nginx/nginx.conf:
evenimente {}

http {
    Server {
        rescrie ^/search/(.*)$ /search.php?q=$1 permanent;
        # rescrie ^/search/(.*)$ /search.php?q=$1? permanent;
    }
}

Steagul permanent este adăugat doar pentru testare. Putem salva codul de mai sus ca nginx.conf și porniți Nginx. răsuci ieșirea pentru codul de mai sus confirmă /search/apple?opt=123 va redirecționa către /search.php?q=apple&opt=123.

În mod similar, pentru a doua condiție de rescriere...

# fișier de configurare /etc/nginx/nginx.conf:
evenimente {}

http {
    Server {
        # rescrie ^/search/(.*)$ /search.php?q=$1 permanent;
        rescrie ^/search/(.*)$ /search.php?q=$1? permanent;
    }
}

răsuci ieșirea pentru codul de mai sus confirmă /search/apple?opt=123 va redirecționa către /search.php?q=mere.

Asa de,

Dacă URI-ul solicitării este /search/apple?opt=123, atunci cum sunt rescrise URI-ul diferit?

Bănuiesc că pentru rescrie ^/căutare/(.)$ /search.php?q=$1 va fi /search.php?q=apple&opt=123 și pentru rescrie ^/search/(.)$ /search.php?q=$1? va fi /search.php?q=apple? Dar nu sunt sigur.

Ai dreptate și acesta este rezultatul așteptat.

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.