मुझे nginx.conf में URL को फिर से लिखना पड़ रहा है जिसमें विशेष क्वेरी पैरामीटर हैं;

उदाहरण के तौर पे:-

location /brands/exampleA {

    if ($arg_cat = "9") {
        return 301 /page/brand-filter;
    }

    if ($arg_cat = "38") {
        return 301 /page/category/brand-filter;
    }

}

फिर ये URL पुनर्लेखन और को फिर example.com/brands/exampleA/?cat=9से लिखेंगे example.com/page/brand-filterexample.com/brands/exampleA/?cat=38example.com/page/category/brand-filter

और ये पूरी तरह से काम करते हैं, लेकिन समस्या यह है कि वे लोकेशन ब्लॉक के हर दूसरे चाइल्ड पेज को तोड़ देते हैं, उदाहरण के लिए, निम्नलिखित पेज सभी एक Nginx त्रुटि के साथ लोड नहीं होंगे: -

example.com/brands/exampleA/range1
example.com/brands/exampleA/range2
example.com/brands/exampleA/range3
example.com/brands/exampleA/range4

तो क्या कुछ ऐसा है जिसे मैं स्थान विवरण में जोड़ सकता हूं ताकि बाद में किसी भी चीज़ पर लागू होने से रोका जा सके exampleA- ये पुनर्लेखन केवल ?cat= query पैरामीटर से मेल खाना चाहिए।

answer

आपका कॉन्फ़िगरेशन वर्तमान में एक उपसर्ग स्थान का उपयोग करता है , जिसका अर्थ है कि यह तब माना जाता है जब अनुरोधित URI मान से शुरू होता है/brands/exampleA

मिलान को केवल एक यूआरआई तक सीमित रखने के लिए, सटीक मिलान सिंटैक्स का उपयोग करें:

location = /brands/exampleA/ { ... }

विवरण के लिए यह दस्तावेज़ देखें