IIS फिर से लिखना, नक्शे और क्वेरी स्ट्रिंग को फिर से लिखना


10

कृपया मुझे नक्शे को फिर से लिखने में मदद करें, मेरे पास यह सेटअप है:

<rewriteMap name="MyMap">
   <add key="/pages" value="/website/pages/index.aspx" />
   <add key="/pages/page-1" value="/website/pages/page-1/index.aspx" />
   <add key="/pages/page-1/section-1" value="/website/pages/page-1/section-1.aspx" />
</rewriteMap>

यहाँ मेरा नियम है:

<rule name="Rewrite rule for MyMap" stopProcessing="true">
   <match url=".*" />
   <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
      <add input="{MyMap:{REQUEST_URI}}" pattern="(.+)" />
   </conditions>
   <action type="Rewrite" url="{C:1}" appendQueryString="true" />
</rule>

यदि मैं इन पृष्ठों तक पहुँचने का प्रयास कर रहा हूँ तो यह काम कर रहा है:

  • www.mydomain.com/pages (ठीक है)
  • www.mydomain.com/pages/page-1 (ठीक है)
  • www.mydomain.com/pages/page-1/section-1 (ठीक है)

लेकिन मैं इनमें से किसी भी पृष्ठ पर एक क्वेरी स्ट्रिंग जोड़ने की संभावना चाहता हूं, उदाहरण:

  • www.mydomain.com/pages?page=1 (विफल)

जब मैं इस पृष्ठ पर पहुंचने का प्रयास करता हूं, तो मुझे एक 404 मिलता है। मैं इसे काम करने के लिए कैसे प्राप्त कर सकता हूं?

जवाबों:


12

डिफ़ॉल्ट URL के द्वारा पुनर्लेखित मानचित्रों का उपयोग करते हुए नियम फिर से बनाएं {REQUEST_URI} चर पर मिलान । इसमें URL + क्वेरी स्ट्रिंग शामिल है। यह आपको क्वेरी स्ट्रिंग मापदंडों के साथ URL के विरुद्ध मिलान करने और उन्हें अन्य पृष्ठों पर फिर से लिखने की अनुमति देता है। बहुत आसान है लेकिन यह स्पष्ट रूप से वह नहीं है जो आप चाहते हैं / आवश्यकता है।

आप क्वेरी स्ट्रिंग के बिना केवल URL के विरुद्ध मिलान करना चाहते हैं। इसे बदलने के लिए आपको {REQUEST_URI} को {URL} की स्थिति में बदलना होगा । तब केवल URL (क्वेरी स्ट्रिंग के बिना) को फिर से लिखे गए मानचित्र के साथ मिलान किया जाएगा। फिर आप फिर से लिखे गए URL में क्वेरी स्ट्रिंग जोड़ सकते हैं ताकि निष्पादित स्क्रिप्ट अभी भी उस तक पहुंच सके।

आप एक नियम को समाप्त करते हैं जैसे:

<rule name="Rewrite rule for MyMap">
    <match url=".*" />
    <conditions>
        <add input="{MyMap:{URL}}" pattern="(.+)" />
    </conditions>
    <action type="Rewrite" url="{C:1}" appendQueryString="true" />
</rule>

1
महान व्याख्या। मैं सोच रहा था कि मैच के उद्देश्यों के लिए QueryString को कैसे अनदेखा किया जाए।
दशरथ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.