Nginx Rewrite Convertir Querystring a Path


11

Me gustaría esta simple regla de reescritura:

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

para ser redirigido a:

/folder/4343/overview/

Busqué algunas soluciones y ninguna realmente funcionó ...

Lo intenté:

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

y

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

¿Qué estoy haciendo mal? Me estoy poniendo 404

(las reglas más simples funcionan bien ...)

Gracias

Respuestas:


12

Si quieres redirigir

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

No olvide configurar / folder / $ 1 / descripción general.


Gracias, la redirección funciona, pero sin el paramater ($ 1) ... está en blanco
YardenST

Actualicé la respuesta.
Valery Viktorovsky

32

Una versión más corta y correcta de la respuesta 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;
}

O, oye, incluso puede ser más corto, si no necesitas verificar los argumentos:

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

desearía haberlo publicado antes :) me habría
ahorrado

jajaja ¿Tenías muchas reglas como esa? ¡Bueno, mejor tarde que nunca! Además, ¿puedo obtener una aceptación, entonces? :)
cnst

La solución de Valery funciona al final :) y podría haber una sola respuesta :)
YardenST

99
meta.stackexchange.com/questions/5234/… « Asegúrese de que, además de trabajar para usted, la respuesta sea una buena práctica. A veces, después de que se acepta la respuesta, entra otra, descubriendo el hecho de que la anterior fue un mal truco. »En serio, ¡no hay solo uno, sino varios problemas diferentes con la respuesta de Valery! ¡Cada línea está esencialmente equivocada, aparte de las llaves!
Cnst
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.