Nginx Rewrite Convert Querystring to Path


11

Je voudrais cette règle de réécriture simple:

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

être redirigé vers:

/folder/4343/overview/

J'ai cherché des solutions et aucune n'a vraiment fonctionné ..

J'ai essayé:

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

et

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

Qu'est-ce que je fais mal? Je reçois 404

(des règles plus simples fonctionnent très bien ..)

Merci

Réponses:


12

Si vous voulez rediriger

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

N'oubliez pas de configurer / dossier / $ 1 / emplacement de vue d'ensemble.


Merci, la redirection fonctionne, mais sans le paramètre (1 $) ... elle est vide
YardenST

J'ai mis à jour la réponse.
Valery Viktorovsky

32

Une version plus courte et plus correcte de la réponse de Valery Viktorovsky.

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

Ou, hé, cela peut même être plus court, si vous n'avez pas besoin de vérifier les arguments:

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


lol. aviez-vous beaucoup de règles comme ça? Eh bien, mieux vaut tard que jamais! puis-je également obtenir une acceptation? :)
cnst

La solution Valery fonctionne bien :) et il ne peut y avoir qu'une seule réponse :)
YardenST

9
meta.stackexchange.com/questions/5234/… « Assurez-vous qu'en plus de travailler pour vous, la réponse est vraiment une bonne pratique. Parfois, une fois la réponse acceptée, une autre entre, découvrant que la précédente était en fait un mauvais hack. »Sérieusement, il n'y a pas qu'un, mais plusieurs problèmes différents avec la réponse de Valéry! Chaque ligne est essentiellement fausse, à part les accolades!
cnst
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.