.net Web配置规则匹配

.net Web配置规则匹配,.net,web-config,.net,Web Config,我的web配置中有两条规则与某个url冲突 第一条规则必须重定向到网站: <rule name="Pop Up Cadastro"> <match url="^cadastro" /> <conditions logicalGrouping="MatchAll"> <add input="{SCRIPT_FILENAME}" matchType="IsFile" ignoreCase="false" negate="tru

我的web配置中有两条规则与某个url冲突

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

<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>
  • 这适用于hole网站,但当我有这个url(cadastro-teste-e-com)时,我会被重定向到该网站而不是hotsite

  • 规则的顺序与我在这里发布的相同

所以,我的问题是,有没有办法将第一条规则仅限于单词cadastro


提前感谢。

在第一条规则中,您的正则表达式匹配以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>


因此,$表示“仅匹配url标记上的内容”?$匹配行尾/字符串。这意味着^cadastro$将匹配[字符串开始]cadastro[字符串结束]等等。谢谢,伙计,这真的很有用。顺便问一下,有什么方法可以让我进一步了解这些规则吗?谢谢老兄,我来看看!
//WebSite URL | First Rule
www.example.com/cadastro

//HotSite URL | Second Rule
www.example.com/cadastro-teste-e-com
<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>