Nginx Yeniden Yazma Sorgu Dizesini Yola Dönüştür


11

Bu basit yeniden yazma kuralını beğenmek istiyorum:

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

yönlendirilecek:

/folder/4343/overview/

Bazı çözümler aradım ve hiçbiri işe yaramadı.

Denedim:

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

ve

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

Neyi yanlış yapıyorum? 404 alıyorum

(daha basit kurallar iyi çalışır ..)

Teşekkürler

Yanıtlar:


12

Yeniden yönlendirmek istiyorsanız

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

/ Folder / $ 1 / genel bakış konumunu yapılandırmayı unutmayın.


Teşekkürler, yönlendirme çalışıyor, ancak
paramater

Cevabı güncelledim.
Valery Viktorovsky

32

Valery Viktorovsky cevap daha kısa ve daha doğru bir versiyonu.

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

Veya, argümanları doğrulamanız gerekmiyorsa, daha da kısa olabilir:

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

daha önce yayınlansaydın :) biraz zaman
kazanırdım

lol. bunun gibi bir çok kuralın var mıydı? geç olması hiç olmamasından daha iyi! ayrıca, o zaman bir kabul alabilir miyim? :)
cnst

Valery çözümü alt satırda çalışır :) ve sadece bir cevap olabilir :)
YardenST

9
meta.stackexchange.com/questions/5234/… « Sizin için çalışmanın yanı sıra, cevabın gerçekten iyi bir uygulama olduğundan emin olun. Bazen cevap kabul edildikten sonra, bir öncekinin aslında kötü bir hack olduğu gerçeğini ortaya çıkaran bir başkası gelir. »Cidden, Valery'nin cevabında sadece bir tane değil, birkaç farklı sorun var! Kıvırcık parantez dışında her satır yanlıştır!
cnst
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.