我可以在IIS中将规则与URL重写相结合吗?

时间:2014-04-30 10:47:22

标签: asp.net asp.net-mvc iis web webserver

我的规则如下:

    <rule name="SpecificRedirect1" stopProcessing="true">
      <match url="^home" />
      <action type="Redirect" url="/" redirectType="Permanent" />
    </rule>
    <rule name="SpecificRedirect2" stopProcessing="true">
      <match url="^admin" />
      <action type="Redirect" url="/" redirectType="Permanent" />
    </rule>

我想添加更多也指向url =“/”

有没有办法可以将匹配组合成一行?

2 个答案:

答案 0 :(得分:2)

使用管道作为&#34; OR&#34;运营商,像这样:

<match url="^home|admin" />

这将匹配mydomain.com/home和mydomain.com/admin。

修改

如果您想要以家庭或管理员开头的任何内容,请尝试以下方法:

<match url="^(admin|home)(.*)" />

这将匹配/admin/help/whatever.htm或/ admin123abc或几乎任何以admin或home开头的内容。

答案 1 :(得分:0)

虽然这个答案与您的问题并不完全一致,但我怀疑您没有考虑以类似homely的符合规则的网址开头的网址

更新:就像@Smirnov在下面说的那样,模式可以简化为^((home|admin)(/|$))

因此,此正则表达式应该有效:^(((home|admin)/)|((home|admin)$))

它将匹配完全属于home或admin的路径,并且没有尾随斜杠或以home或admin开头且具有尾部斜杠的路径。

您可以轻松地测试以下规则:http://regexhero.net/tester(不是我的,也不是我的关联:)。检查多行选项以测试多个路径。

enter image description here Screenshot 2 from regexhero

所以最终规则看起来应该是这样的:

<match url="^((home|admin)(/|$))" />