Nginx Rewrite Convert Querystring to Path


11

Chciałbym, aby ta prosta reguła przepisywania:

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

zostać przekierowanym do:

/folder/4343/overview/

Szukałem niektórych rozwiązań i żadne z nich faktycznie nie działało ...

Próbowałem:

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

i

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

Co ja robię źle? Dostaję 404

(prostsze reguły działają dobrze ..)

Dzięki

Odpowiedzi:


12

Jeśli chcesz przekierować

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

Nie zapomnij skonfigurować lokalizacji / folder / $ 1 / Overview.


Dzięki, przekierowanie działa, ale bez parametru (1 $) ... jest puste
YardenST

Zaktualizowałem odpowiedź.
Valery Viktorovsky

32

Krótsza i bardziej poprawna wersja odpowiedzi Walerego Wiktorowskiego.

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

Lub, hej, może być nawet krótszy, jeśli nie musisz weryfikować argumentów:

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

szkoda, że ​​nie opublikowałeś go wcześniej :) zaoszczędziłoby mi to trochę czasu
YardenST

lol. czy miałeś wiele takich zasad? cóż, lepiej późno niż wcale! też, czy mogę otrzymać akceptację? :)
cnst

Rozwiązanie Valery działa na pierwszym miejscu :) i może być tylko jedna odpowiedź :)
YardenST

9
meta.stackexchange.com/questions/5234/… « Upewnij się, że oprócz pracy dla Ciebie, odpowiedź jest naprawdę dobrą praktyką. Czasami po zaakceptowaniu odpowiedzi pojawia się kolejna, odsłaniając fakt, że poprzedni był w rzeczywistości złym hackem. »Poważnie, nie ma tylko jednego, ale kilka różnych problemów z odpowiedzią Valery'ego! Każda linia jest zasadniczo błędna, z wyjątkiem nawiasów klamrowych!
cnst
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.