2010-02-13 21 views
22

पर आधारित रीडायरेक्ट मुझे क्वेरी स्ट्रिंग पैरामीटर के आधार पर किसी अन्य यूआरएल पर रीडायरेक्ट करने में कुछ समस्याएं हैं।आईआईएस यूआरएल रीवाइट मॉड्यूल: QueryString

<rule name="Signup Redirect 1" stopProcessing="true"> 
    <match url="signup\.aspx\?p=1" /> 
    <conditions logicalGrouping="MatchAll" /> 
    <action type="Redirect" url="signup" redirectType="Temporary" /> 
</rule> 

अब

www.domain.com/signup जब वे प्रवेश www.domain.com/: मैं उन जो करने के लिए www.domain.com/signup.aspx?p=1 दर्ज रीडायरेक्ट करना चाहते हैं signup.aspx पी = 2 वे के पास जाना चाहिए:

www.domain.com/signup/promocode

<rule name="Signup Redirect 2" stopProcessing="true"> 
    <match url="signup\.aspx\?p=2" /> 
    <conditions logicalGrouping="MatchAll" /> 
    <action type="Redirect" url="signup/promocode" redirectType="Temporary" /> 
</rule> 

उपरोक्त नियमों काम नहीं करते। ऐसा करने का सही तरीका क्या है? अग्रिम में धन्यवाद।

जीआर

Martijn

उत्तर

28

अगर यह थोड़ा बेहतर काम करता है देखें:

<rule name="Signup Redirect 1" stopProcessing="true"> 
    <match url="signup\.aspx$" /> 
    <conditions> 
    <add input="{QUERY_STRING}" pattern="p=1" /> 
    </conditions> 
    <action type="Redirect" url="signup" redirectType="Temporary" /> 
</rule> 

<rule name="Signup Redirect 2" stopProcessing="true"> 
    <match url="signup\.aspx$" /> 
    <conditions> 
    <add input="{QUERY_STRING}" pattern="p=2" /> 
    </conditions> 
    <action type="Redirect" url="signup/promocode" redirectType="Temporary" /> 
</rule> 
+0

धन्यवाद यह काम करता है! –

+1

यह मेरे लिए काम किया, और मुझे दिन बचाया - धन्यवाद – Bala

36

एक गंतव्य का चयन करने के लिए एक मूल्य का उपयोग करने का एक और अधिक मजबूत विधि पुनर्लेखन मानचित्र का उपयोग करने के लिए है। नक्शा अनिवार्य रूप से एक लुकअप टेबल है। इसके लिए प्रत्येक नए पथ के लिए एक नए नियम (और प्रत्येक अनुरोध पर पैटर्न के खिलाफ यूआरएल का अतिरिक्त मूल्यांकन) की आवश्यकता नहीं है।

<rules> 
    <rule name="Signup Redirect Map" stopProcessing="true"> 
    <match url="^signup\.aspx$" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="true"> 
     <add input="{QUERY_STRING}" pattern="p=([^&amp;]+)" /> 
     <add input="{Signups:{C:1}}" pattern="(.+)" /> 
    </conditions> 
    <action type="Redirect" url="{C:2}" redirectType="Temporary" /> 
    </rule> 
</rules> 
<rewriteMaps> 
    <rewriteMap name="Signups"> 
    <add key="1" value="signup" /> 
    <add key="2" value="signup/promocode" /> 
    <add key="3" value="signup/newcode" /> 
    <add key="n" value="signup/futureproof" /> 
    </rewriteMap> 
</rewriteMaps> 

परिभाषाएं:

  • {सी: 1}: क्वेरी स्ट्रिंग मूल्य पहली शर्त मैच के लिए एक backreference है।
  • {साइनअप: {सी: 1}} साइनअप मानचित्र में {सी: 1} देखने के लिए एक निर्देश है।
  • {सी: 2} दूसरे शर्त मैच का बैकरेफर है: साइनअप मानचित्र से मूल्य।