IIS7:rewriteMap 相当于精确匹配规则

IIS7:rewriteMap 相当于精确匹配规则

我有一个站点mydomain.com/mysite,我想在 IIS7 中配置一组重定向。

要从 重定向mydomain.com/mysite/old.aspxmydomain.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/

<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 中指定站点名称吗?

答案1

我假设您将具有此重写规则的 web.config 放在文件夹 /mysite 中?

您应该能够{TestRewriteMap:{REQUEST_URI}}用替换{TestRewriteMap:{REQUEST_FILENAME}}。然后您可以/mysite/从 中的键和值中删除<rewriteMap></rewriteMap>。请记住,这还会匹配目录结构中更深层的任何 old.aspx(在 /mysite/ 下)。

相关内容