Nginx Riscrivi Converti Querystring in Path


11

Vorrei questa semplice regola di riscrittura:

/somefolder/mypage.aspx?myid=4343&tab=overview

essere reindirizzato a:

/folder/4343/overview/

Ho cercato alcune soluzioni e nessuna ha funzionato davvero ..

Provai:

rewrite ^/somefolder/mypage.aspx?myid=(.*)&tab=overview$  /folder/$1/overview  permanent;

e

rewrite ^/somefolder/mypage\.aspx\?myid=(.*)&tab=overview$  /folder/$1/overview  permanent;

Che cosa sto facendo di sbagliato? Sto ricevendo 404

(le regole più semplici funzionano bene ..)

Grazie

Risposte:


12

Se vuoi il reindirizzamento

location ~ /somefolder/mypage.aspx {
    if ($args ~* "^myid=(\d+)&tab=overview") {
        set $mid $1;
        set $args '';
        rewrite ^.*$ /folder/$mid/overview permanent;
    }
}

Non dimenticare di configurare / cartella / $ 1 / posizione panoramica.


Grazie, il reindirizzamento funziona, ma senza il parametro ($ 1) ... è vuoto
YardenST

Ho aggiornato la risposta.
Valery Viktorovsky

32

Una versione più breve e corretta della risposta di Valery Viktorovsky.

location = /somefolder/mypage.aspx {
    if ($arg_tab != overview) { return 404; }
    if ($arg_myid !~ "^\d+$") { return 404; }
    rewrite ^ /folder/$arg_myid/overview? permanent;
}

Oppure, ehi, può anche essere più breve, se non è necessario verificare gli argomenti:

rewrite ^/somefolder/mypage.aspx /folder/$arg_myid/$arg_tab? permanent;

vorrei che l'avessi pubblicato prima :) mi avrebbe risparmiato un po 'di tempo
YardenST

lol. hai avuto molte regole del genere? Beh, meglio tardi che mai! inoltre, posso ottenere un'accettazione, allora? :)
cnst

La soluzione Valery funziona in fondo :) e potrebbe esserci una sola risposta :)
YardenST

9
meta.stackexchange.com/questions/5234/… « Assicurati che oltre a lavorare per te, la risposta sia davvero una buona pratica. A volte dopo che la risposta viene accettata, ne arriva un'altra, scoprendo il fatto che la precedente era in realtà un brutto hack. »Seriamente, non ci sono solo uno, ma diversi problemi con la risposta di Valery! Ogni linea è essenzialmente sbagliata, a parte le parentesi graffe!
CNST
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.