Asp.net web.config的哪个正则表达式将匹配URL的一部分,并允许在此文本之后执行任何操作?

Asp.net web.config的哪个正则表达式将匹配URL的一部分,并允许在此文本之后执行任何操作?,asp.net,regex,redirect,web-config,Asp.net,Regex,Redirect,Web Config,我正在努力完成IIS 7中web.config文件的正则表达式。我们有几百个页面将被重定向(每个客户端请求)。其中许多页面具有如下URL模式: 我们打算将这些请求重定向到一个公共页面,如下所示: 我需要解释的URL模式有十几种。所以我只是想让这个重写匹配正常工作,而不是将所有页面作为键值对应用到重写映射中。这就是我到目前为止所做的,你可以看到我已经注释掉的一些尝试 <rewrite> <rewriteMaps> <rewriteMap n

我正在努力完成IIS 7中web.config文件的正则表达式。我们有几百个页面将被重定向(每个客户端请求)。其中许多页面具有如下URL模式:

我们打算将这些请求重定向到一个公共页面,如下所示:

我需要解释的URL模式有十几种。所以我只是想让这个重写匹配正常工作,而不是将所有页面作为键值对应用到重写映射中。这就是我到目前为止所做的,你可以看到我已经注释掉的一些尝试

<rewrite>
  <rewriteMaps>
    <rewriteMap name="301Redirects">
      <add key="/index.htm" value="/" />
      <add key="/index.html" value="/" />
      <add key="/customPage.htm" value="/" />
    </rewriteMap>
  </rewriteMaps>
  <rules>
    <rule name="301 Redirect Rule">
      <match url=".*" />
      <conditions>
        <add input="{301Redirects:{REQUEST_URI}}" pattern="(.+)" />
      </conditions>
      <action type="Redirect" url="{C:1}" />
    </rule>
<!-- Here is the rule I can't get to work. -->
    <rule name="301 to aaa/bbb" stopProcessing="true">
      <match url="^/aaa-bbb([\d\w\s])" />
      <!--<match url="^/aaa-bbb(.{0,1})" />-->
      <!--<match url="^/aaa-bbb(.?)" />-->
      <!--<match url="^/aaa-bbb(.*)$" />-->
      <!--<match url="^/aaa-bbb(\s\S)" />-->
      <!--<match url="^/aaa-bbb[\s\S]*/([\s\S]*?(.htm|.html))" />-->
      <!--<match url="^/aaa-bbb(.)" />-->
      <!--<match url="^/aaa-bbb(.*)" />-->
      <!--<match url="^/aaa-bbb([ _0-9a-z-]+)" />-->
      <action type="Redirect" url="/aaa/bbb" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>



将成功重定向到此:


但在aaa bbb的末尾附加任何其他内容都会导致404错误。谢谢您的帮助。

问题是您使用
/
启动了regexp。在
中,你是说你应该匹配
(http://site/aaa)-(bbb/*)
只被
$1/$2
替换?不,破折号不是绝对的。模式是。在我正在使用的原始代码中,一些URL有破折号,所以当我使问题更一般化时,我只是保留了破折号。谢谢你要求澄清。谢谢维克多,这很有效。如果我想在表达式中包含起始斜杠,我需要转义它吗?您不需要添加起始斜杠,因为您的regexp将不匹配。模式将与域后第一个斜杠后开始的路径匹配。url的Ex:
http://localhost/some/path/in/url
只有选定的部分将用于匹配:
some/path/in/url
<rule name="301 to aaa/bbb" stopProcessing="true">
    <match url="^aaa-bbb(.?)" />
    <action type="Redirect" url="/aaa/bbb" redirectType="Permanent" />
</rule>