2012-05-16 14 views
10

से एक फ़ोल्डर को दोबारा लिखें IIS 7.5 और यूआरएल रिवाइट का उपयोग करें।आईआईएस 7.5 यूआरएल रिवाइट - एक यूआरएल

IIS में
webroot 
webroot/LegacySite 

दोनों webroot और विरासत अलग होती ऐप-फ़ोल्डर:

मैं इस तरह से फ़ाइल पदानुक्रम के साथ एक वेबसाइट है। इस समय

फिर से लिखा हो जाएगा, तो:


मैं तो मेरे URL पुनः लिखने की जरूरत है ठीक से काम नहीं करता है, क्या आप मुझे बता सकते हैं कि मैं क्या खो रहा हूं?

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration> 
     <system.webServer> 
      <rewrite> 
       <rules> 
        <rule name="MyRole" stopProcessing="true"> 
         <match url=".*" /> 
         <conditions> 
          <add input="{HTTP_HOST}" pattern="^mysite.com" /> 
          <add input="{PATH_INFO}" pattern="^\LegacySite\" negate="true" /> 
         </conditions> 
         <action type="Rewrite" url="\LegacySite\{R:0}" /> 
        </rule> 
       </rules> 
      </rewrite> 
     </system.webServer> 
    </configuration> 

उत्तर

16

निम्नलिखित काम करना चाहिए:

<rule name="MyRole" stopProcessing="true"> 
    <match url="LegacySite/(.*)" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^mysite.com$" /> 
    </conditions> 
    <action type="Rewrite" url="/{R:1}" appendQueryString="true" /> 
</rule> 

आप होस्ट नाम की जाँच के लिए सशर्त छोड़ने के लिए चाहते हो सकता है। क्या यह वाकई महत्वपूर्ण है? क्या आपके पास उस वेबसाइट से जुड़ा कोई अन्य डोमेन नाम है जिसके लिए आप रीडायरेक्ट नहीं करना चाहते हैं? यह अनावश्यक लगता है। आप शायद ही जरूरत है:

<rule name="MyRole" stopProcessing="true"> 
    <match url="LegacySite/(.*)" /> 
    <action type="Rewrite" url="/{R:1}" appendQueryString="true" /> 
</rule> 

मैं appendQueryString="true" जोड़ दिया है फिर से लिखा URL में किए गए (वैकल्पिक) क्वेरी स्ट्रिंग पैरामीटर पारित करने के लिए।

+0

आपके उत्तर के लिए धन्यवाद मार्को – GibboK

संबंधित मुद्दे