Nginx को फिर से लिखना क्वेरिस्ट्रिंग को पथ में बदलें


11

मैं इस सरल पुनर्लेखन नियम की तरह फुसफुसाया:

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

इसे पुनर्निर्देशित किया जाना है:

/folder/4343/overview/

मैं कुछ समाधान के लिए देखा और कोई भी वास्तव में काम किया ..

मैंने कोशिश की:

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

तथा

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

मैं क्या गलत कर रहा हूं? मुझे 404 मिल रहे हैं

(सरल नियम ठीक काम करता है ..)

धन्यवाद

जवाबों:


12

यदि आप पुनर्निर्देशन चाहते हैं

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

कॉन्फ़िगर / फ़ोल्डर / $ 1 / ओवरव्यू स्थान को मत भूलना।


धन्यवाद, रीडायरेक्ट काम करता है, लेकिन
पैरामैटर के

मैंने जवाब अपडेट किया।
वालेरी विक्टोरोव्स्की

32

Valery Viktorovsky उत्तर का एक छोटा और अधिक सही संस्करण।

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

या, हे, यह भी छोटा हो सकता है, अगर आपको तर्कों को सत्यापित करने की आवश्यकता नहीं है:

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

काश आपने इसे पहले पोस्ट किया होता :) :) इससे मुझे कुछ समय
बचता

जबरदस्त हंसी। क्या आपके पास बहुत सारे नियम हैं? खैर, देर आए दुरुस्त आए! भी, मैं एक स्वीकार कर सकते हैं, तो? :)
cnst

Valery समाधान नीचे की रेखा पर काम करता है :) और केवल एक ही उत्तर हो सकता है :)
YardenST

9
meta.stackexchange.com/questions/5234/… « सुनिश्चित करें कि आपके लिए काम करने के अलावा, उत्तर वास्तव में महत्वपूर्ण अभ्यास है। कभी-कभी उत्तर स्वीकार होने के बाद, एक और आता है, इस तथ्य को उजागर करता है कि पिछले एक वास्तव में एक बुरा हैक था। »सच में, वेलेरी के जवाब के साथ सिर्फ एक ही नहीं, बल्कि कई अलग-अलग समस्याएं हैं! प्रत्येक पंक्ति अनिवार्य रूप से गलत है, घुंघराले ब्रेस के अलावा!
16'13
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.