Web配置规则匹配

时间:2014-07-21 12:33:16

标签: .net web-config

我的网络配置中有两个与某个网址冲突的规则。

此第一条规则必须重定向到网站:

<rule name="Pop Up Cadastro">
    <match url="^cadastro" />
    <conditions logicalGrouping="MatchAll">
        <add input="{SCRIPT_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{SCRIPT_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
    </conditions>
    <action type="Rewrite" url="site/site.php?url={R:0}" appendQueryString="true" />
</rule>

如果未找到匹配项,则第二条规则将重定向到hotsite:

<rule name="HotSite">
    <match url="^(.*)$" />
    <conditions logicalGrouping="MatchAll">
        <add input="{SCRIPT_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{SCRIPT_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
    </conditions>
    <action type="Rewrite" url="HotSite/Default.aspx?url={R:0}" appendQueryString="true" />
</rule>

我的网址结构如下:

//WebSite URL | First Rule
www.example.com/cadastro

//HotSite URL | Second Rule
www.example.com/cadastro-teste-e-com
  • 这适用于洞网站,但是当我有这个网址(cadastro-teste-e-com)时,我会被重定向到网站而不是网站。

  • 规则的顺序与我在此处发布的相同。

所以,我的问题是,有没有办法将第一条规则限制为只有 cadastro 这个词?

提前致谢。

1 个答案:

答案 0 :(得分:1)

在第一个规则中你有正则表达式匹配以cadastro开头的所有内容,如果你只想匹配cadastro,你需要在正则表达式结束时添加$。

<rule name="Pop Up Cadastro">
    <match url="^cadastro$" />
    <conditions logicalGrouping="MatchAll">
        <add input="{SCRIPT_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{SCRIPT_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
    </conditions>
    <action type="Rewrite" url="site/site.php?url={R:0}" appendQueryString="true" />
</rule>