Nginx Rewrite Querystring in Pfad konvertieren

11

Ich möchte diese einfache Umschreiberegel:

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

umgeleitet werden an:

/folder/4343/overview/

Ich habe nach Lösungen gesucht und keine hat tatsächlich funktioniert.

Ich habe es versucht:

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

und

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

Was mache ich falsch? Ich bekomme 404

(Einfachere Regeln funktionieren gut ..)

Vielen Dank

YardenST
quelle

Antworten:

12

Wenn Sie umleiten möchten

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

Vergessen Sie nicht, den Ordner / folder / $ 1 / summary zu konfigurieren.

Valery Viktorovsky
quelle
Danke, die Weiterleitung funktioniert, aber ohne den Parameter ($ 1) ... ist sie leer
YardenST
Ich habe die Antwort aktualisiert.
Valery Viktorovsky
32

Eine kürzere und korrektere Version der Antwort von Valery Viktorovsky.

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

Oder, hey, es kann sogar kürzer sein, wenn Sie die Argumente nicht überprüfen müssen:

rewrite ^/somefolder/mypage.aspx /folder/$arg_myid/$arg_tab? permanent;
cnst
quelle
Ich wünschte, Sie hätten es früher gepostet :) Es hätte mir einige Zeit
gespart
lol. Hattest du so viele Regeln? Naja, besser spät als nie! Kann ich dann auch eine Annahme bekommen? :)
cnst
Valery Lösung funktioniert unter dem Strich :) und es könnte nur eine Antwort geben :)
YardenST
9
meta.stackexchange.com/questions/5234/… « Stellen Sie sicher, dass die Antwort nicht nur für Sie funktioniert, sondern auch eine gute Praxis ist. Manchmal, nachdem die Antwort akzeptiert wurde, kommt eine andere herein und deckt die Tatsache auf, dass die vorherige tatsächlich ein schlechter Hack war. »Im Ernst, es gibt nicht nur eines, sondern verschiedene Probleme mit Valerys Antwort! Jede Linie ist im Wesentlichen falsch, außer den geschweiften Klammern!
cnst