忽略web.config重写规则中的匹配

时间:2015-11-25 16:39:07

标签: url-rewriting iis-7 web-config

我已经并且发布了web.config中的规则正在捕捉我想要忽略的内容。

我有:

http://domain.com/video-conferencing-room/australia/australian-capital-territory/barton

通过以下规则获取。我添加了部分希望可以解决它,但没有快乐。

的路由
 <rule name="video-conferencing-room-country">
        <match url="^video\-conferencing\-room/([0-9a-z- ]+)" />
        <conditions>
            <add input="{HTTP_HOST}" matchType="Pattern" pattern="^video\-conferencing\-room/([0-9a-z- ]+)/([0-9a-z-, ]+)/([0-9a-z-, ]+)" ignoreCase="true"  />
        </conditions>
        <action type="Redirect" url="/meeting-rooms/{UrlEncode:{R:1}}" redirectType="Permanent" />              
    </rule>

但是这种情况会阻止这样的网址: http://domain.com/video-conferencing-room/australia

点击规则。

我更新为使用{URL},并且: http://domain.com/video-conferencing-room/australia

现在有效,

但我还有一个问题

http://domain.com/video-conferencing-room/australia/australian-capital-territory/barton

这条规则会改写:

 <rule name="video-conferencing-room country state">
        <match url="^video\-conferencing\-room/([0-9a-z- ]+)/([0-9a-z-, ]+)" />
        <conditions>
            <add input="{URL}" matchType="Pattern" pattern="^video\-conferencing\-room/([0-9a-z- ]+)/([0-9a-z-, ]+)/([0-9a-z-, ]+)" ignoreCase="true" negate="true"  />
        </conditions>
        <action type="Redirect" url="/meeting-rooms/{UrlEncode:{R:1}}/{UrlEncode:{R:2}}" redirectType="Permanent" />            
    </rule>

当我想忽略它时。

你知道我做错了吗?

2 个答案:

答案 0 :(得分:1)

您的情况不正确,您使用{HTTP_HOST}进行设置,{HTTP_HOST}只是主机名部分,即在您的示例domain.com中。

请尝试使用{URL}作为输入,其中包含包含视频会议...部分的网址。

答案 1 :(得分:0)

尝试在最后添加$

^video\-conferencing\-room/([0-9a-z- ]+)/([0-9a-z-, ]+)$

你可以删除条件。字符串结尾的$ states