2012-05-16 85 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