2012-03-09 15 views
18

के भीतर पैरामीटर निकालें मैं पुन: लॉन्च के बाद nginx में URL को फिर से लिख रहा हूं। पुरानी साइट में मेरे पास यूआरएल में सामान फ़िल्टर करने के लिए क्वेरी पैरामीटर थे।nginx rewrite

http://www.example.com/mypage.php?type=4 

नए पृष्ठ में इस तरह के पैरामीटर नहीं हैं। मैं उन्हें हटाने और मुख्य पृष्ठ पर URL पुनः लिखने के, ताकि मैं चाहता हूँ:

http://www.example.com/mypage/ 

nginx में मेरे पुनर्लेखन नियम है:

location ^~ /mypage.php { 
    rewrite ^/mypage.php$ http://www.example.com/mypage permanent; 
} 

लेकिन इस नियम मानदंड अभी भी जोड़ा जाता है के साथ। मैंने सोचा कि $ nginx को और मूल्यों को संसाधित करने से रोक देगा ... कोई विचार? अन्य सभी प्रश्न पैरामीटर जोड़ने के तरीके से निपटते हैं - मैं बस मेरा हटाना चाहता हूं :)

उत्तर

33

एक ही समस्या थी, जवाब देने के बाद rewrite docs में स्वयं को प्रस्तुत किया गया।

यदि आप कोई निर्दिष्ट करते हैं? एक पुनर्लेखन के अंत में तो Nginx मूल $ args (तर्क)

अपने उदाहरण के लिए

तो छोड़ देंगे, इस चाल करना होगा:

location ^~ /mypage.php { 
    rewrite ^/mypage.php$ http://www.example.com/mypage? permanent; 
} 
+0

आपके पास मेरे पास बेहतर पढ़ने के कौशल हैं;) बहुत बहुत धन्यवाद! –

+10

मैं एक विशिष्ट पैरामीटर को छोड़ना चाहता हूं। – virsir

+0

प्रतीक्षा करें, क्या यह नियम रीडायरेक्ट लूप का कारण नहीं बनता? – defbyte

6

किसी URL से एक पैरामीटर ड्रॉप करने के लिए, में इस मामले coupon=xxx:

if ($query_string ~ "^(.*)coupon=(.*)$") { 
    rewrite ^(.*)$ $uri? permanent; 
} 

नोट यदि बयान से मेल खाता है कि इस सभी मापदंडों छोड़ देंगे। $uri पैरामीटर के बिना मूल अनुरोध है।

2

स्थान के अंदर $args चर को खाली करने का प्रयास करें।

set $args '';