2012-05-16 126 views
10

我使用IIS 7.5和URL重寫。IIS 7.5 URL重寫 - 從URL重寫文件夾

我以這種方式與文件層次網站:

webroot 
webroot/LegacySite 

Webroot公司都和傳統的分離應用程序文件夾中的IIS。


我需要重寫我的網址,以便:

下面我Web.Conf出現在根目錄文件夾,此刻不能正常工作,你能指出我的缺點嗎?

<?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

感謝Marco提供的答案 – GibboK