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.