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

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.


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;

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.