Url rewriting 使用重写映射时,如何忽略.aspx扩展名?

Url rewriting 使用重写映射时,如何忽略.aspx扩展名?,url-rewriting,iis-7,Url Rewriting,Iis 7,我有一个重写映射,其中包含约100个旧URL到新URL行: <rewriteMaps> <rewriteMap name="OldSiteRewriteMap" defaultValue=""> ... <add key="/a/b/oldpage" value="/x/y/newpage" /> ... </rewriteMap> </rewriteMaps> ... (旧网站URL)我被重定向到-

我有一个重写映射,其中包含约100个旧URL到新URL行:

<rewriteMaps>
  <rewriteMap name="OldSiteRewriteMap" defaultValue="">
    ...
    <add key="/a/b/oldpage" value="/x/y/newpage" />
    ...
  </rewriteMap>
</rewriteMaps>

...
(旧网站URL)我被重定向到-太棒了!但是当我访问时——请注意.aspx扩展名——我不会被重定向


当我的重写规则试图使用重写映射来映射URL时,如何让它忽略“.aspx”扩展名?

一位同事提出了以下建议-在“匹配URL”中使用正则表达式来捕获除可能的尾随“.aspx”之外的所有内容然后将捕获传递给重写映射,以代替PATH_INFO或任何其他服务器变量。看起来效果不错

    <rule name="Redirect old site URLs">
      <match url="^(.+?)(\.aspx)?$" />
      <conditions>
        <add input="{OldSiteRewriteMap:{R:1}}" pattern="(.+)" />
      </conditions>
      <action type="Redirect" url="{C:1}" redirectType="Permanent" appendQueryString="false" />
    </rule>

    <rule name="Redirect old site URLs">
      <match url="^(.+?)(\.aspx)?$" />
      <conditions>
        <add input="{OldSiteRewriteMap:{R:1}}" pattern="(.+)" />
      </conditions>
      <action type="Redirect" url="{C:1}" redirectType="Permanent" appendQueryString="false" />
    </rule>