IIS7:rewriteMap相当于完全匹配规则

我在mydomain.com/mysite有一个网站,我想在IIS7中configuration一组redirect。

要从mydomain.com/mysite/old.aspxredirect到mydomain.com/mysite/new.aspx我可以这样写:

 <system.webServer> <rewrite> <rules> <rule name="test" patternSyntax="ExactMatch" stopProcessing="true"> <match url="old.aspx" /> <action type="Redirect" url="new.aspx" /> </rule> </rules> 

但是为了得到与重写映射相同的结果,我必须指定/mysite/ part:

 <rewriteMaps> <rewriteMap name="TestRewriteMap"> <add key="/mysite/old.aspx" value="/mysite/new.aspx" /> </rewriteMap> </rewriteMaps> <rules> <rule name="Redirect rule1 for TestRewriteMap"> <match url=".*" /> <conditions> <add input="{TestRewriteMap:{REQUEST_URI}}" pattern="(.+)" /> </conditions> <action type="Redirect" url="{C:1}" appendQueryString="false" /> </rule> </rules> 

有没有一种方法可以避免在重写映射url中指定网站名称?

我假设你把这个重写规则的web.config文件夹/ mysite?

您应该可以用{TestRewriteMap:{REQUEST_URI}}replace{TestRewriteMap:{REQUEST_FILENAME}} 。 那么你可以从<rewriteMap></rewriteMap>的键和值中删除/mysite/ 。 请记住,这也将匹配目录结构中较深的任何old.aspx(在/ mysite /下)。